题解 | #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");
}
}
