题解 | #N的阶乘#
N的阶乘
https://www.nowcoder.com/practice/f54d8e6de61e4efb8cce3eebfd0e0daa
#include <stdlib.h> #include <stdio.h> #include <string.h> #define len 2000 char res[len]; int chartoint(char c){ int a = c-'0'; if(a>=0&&a<=9){ return a; } return -1; } char inttochar(int a){ return a+'0'; } void multipy(int x){ int jin = 0; int n = strlen(res); //printf("%c\n",res[0]); int i; for(i = 0;i<n;i++){ int temp = chartoint(res[i])*x+jin; jin = temp/10; res[i] = inttochar(temp%10); //printf("temp = %d\n",temp); } while(jin!=0){ res[i] = inttochar(jin%10); jin/=10; i++; } res[i] = '\0'; //printf("i = %d res = %s\n",i,res); } int main(){ int n; while(scanf("%d",&n)!=EOF){ res[0] = '1'; res[1] = '\0'; for(int i = 1;i<=n;i++){ multipy(i); //printf("%s\n",res); } int n = strlen(res); for(int i = n-1;i>=0;i--){ printf("%c",res[i]); } printf("\n"); } }