题目描述:
用高精度计算出S=1!+2!+3!+…+n!(n≤200) 其中“!”表示阶乘,例如:5!=5*4*3*2*1。 输入正整数N,输出计算结果S。输入格式:
一个正整数N。
输出格式:
计算结果S。
样例输入:
5
样例输出:
153
#include<bits/stdc++.h> using namespace std; int a[201][1001],c[1001],n,i,j,l,s[201],m=0; int main(){ cin>>n; for(i=1;i<=n;i++) a[i][1]=1; for(i=1;i<=n;i++){ s[i]=1; for(j=1;j<=i;j++) for(l=1;l<=s[i];l++){ a[i][l]*=j; a[i][l]=a[i][l-1]/10+a[i][l]; a[i][l-1]%=10; if(a[i][l]>=10 && l==s[i]) s[i]++; } if(s[i]>m) m=s[i]; } for(i=1;i<=n;i++) for(j=1;j<=s[i];j++){ c[j]+=a[i][j]; c[j+1]+=c[j]/10; c[j]%=10; } for(int i=m;i>=1;i--) cout<<c[i]; return 0; }