N的阶乘

输入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('\n');
22     return 0;
23 }

题目来源:51Nod

posted @ 2017-02-07 08:39  J_william  阅读(445)  评论(0编辑  收藏  举报