输入N求N的阶乘的准确值。
Input
输入N(1 <= N <= 10000)
Output
输出N的阶乘
Input示例
5
Output示例
120
C++的运行时限为:1000 ms ,空间限制为:131072 KB
代码实现:
1 #include<cstdio> 2 #define base 10000 3 int n,l=1; 4 int a[base+10]={0,1},b[base+10]; 5 void rid(int x){ 6 for(int i=1;i<=l;i++) b[i]=a[i]*x; 7 for(int i=1;i<=l;i++){ 8 a[i]=b[i]; 9 if(a[i]>=base){ 10 b[i+1]+=a[i]/base; 11 a[i]%=base; 12 if(i==l) l++; 13 } 14 } 15 } 16 int main(){ 17 scanf("%d",&n); 18 for(int i=1;i<=n;i++) rid(i); 19 printf("%d",a[l--]); 20 for(int i=l;i>0;i--) printf("%04d",a[i]); 21 putchar(' '); 22 return 0; 23 }
题目来源:51Nod