1173:阶乘和
传送门:http://ybt.ssoier.cn:8088/problem_show.php?pid=1173
就是阶乘加加法而已
1 #include<iostream> 2 #include<cstring> 3 #define N 210 4 using namespace std; 5 int a[N],ans[N],n,lena=1,lenans=1; 6 void jia(){ 7 int length=max(lena,lenans); 8 for(int i=0;i<length;i++)ans[i]+=a[i]; 9 for(int i=0;i<length;i++) 10 if(ans[i]>9){ 11 ans[i+1]+=ans[i]/10; 12 ans[i]%=10; 13 if(i==length)length++; 14 } 15 lenans=length; 16 return ; 17 } 18 void cheng(int k){ 19 for(int i=0;i<lena;i++) 20 a[i]*=k; 21 for(int i=0;i<lena;i++) 22 if(a[i]>9){ 23 a[i+1]+=a[i]/10; 24 a[i]%=10; 25 if(i==lena-1)lena++; 26 } 27 return; 28 } 29 int main(){ 30 cin>>n; 31 if(n==0){ 32 cout<<0<<endl; 33 return 0; 34 } 35 a[0]=1; 36 ans[0]=1; 37 for(int i=2;i<=n;i++){ 38 cheng(i); 39 jia(); 40 } 41 for(int i=lenans-1;i>=0;i--)cout<<ans[i]; 42 cout<<endl; 43 }