求 10000以内 n 的阶乘。
输入格式
只有一行输入,整数 n(0≤n≤10000)
输出格式
一行,即 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 }