求 10000 以内 n 的阶乘

 

求 10000以内 n 的阶乘。

输入格式

只有一行输入,整数 n(0n10000)

输出格式

一行,即 n!的值。

输出时每行末尾的多余空格,不影响答案正确性

样例输入

100

样例输出

93326215443944152681699238856266700490715968264381621468592963895217599993229915608
941463976156518286253697920827223758251185210916864000000000000000000000000
 1 #include<iostream>
 2 #include<cstring>
 3 #define N 100010
 4 using namespace std;
 5 int n,a[N],lena=1;
 6 int main(){
 7     cin>>n;
 8     if(n==0){
 9         cout<<0<<endl;
10         return 0;
11     }
12     a[0]=1;
13     for(int k=2;k<=n;k++){
14         for(int i=0;i<lena;i++)a[i]*=k;
15         for(int i=0;i<lena;i++){
16             if(a[i]>9){
17                 a[i+1]+=a[i]/10;
18                 a[i]%=10;
19                 if(i==lena-1)lena++;
20             }
21         }
22     }
23     for(int i=lena-1;i>=0;i--)cout<<a[i];
24     cout<<endl;
25 }

 

posted @ 2020-04-11 15:04  加微信X466550探讨  阅读(131)  评论(0编辑  收藏  举报