#include <stdio.h> int main() { const int maxn = ...; //n的阶乘所得的值的大致位数 int a[maxn];//储存每一位所得到的数 int temp,digit,n,i,j=0;//temp每次的得数 digit每次得数的位数 scanf("%d",&n); a[0]=1;//从1开始乘 digit=1;//位数从第一位开始 for(i=2;i<=n;i++) { int num=0; for(j=0;j<digit;j++) { temp=a[j]*i+num; a[j]=temp%10; num=temp/10; } while(num)//判断退出循环后,num的值是否为0 { a[digit++]=num%10;//继续储存 num=num/10; } } for(i=digit-1;i>=0;i--) printf("%d",a[i]); printf("\n"); return 0; }
//对应习题:HDU-1042
转载于:https://www.cnblogs.com/KeepZ/p/11144727.html