用高精度计算出S=1!+2!+3!+…+n!(n≤50)
其中“!”表示阶乘,例如:5!=5*4*3*2*1。
输入正整数N,输出计算结果S。
输入
一个正整数N。
输出
计算结果S。
样例输入
5
样例输出
153
来源
NOIP1998复赛 普及组 第二题
出问题的代码:
#include <bits/stdc++.h>
using namespace std;
int a[40000]={0},n,weishu=1,x,b[40000]={0};
int main() {
cin>>x;
for (n=0;n<=x;n++){
a[0]=1;
b[0]=1;
for (int i=1;i<=n;i++){
int r=0;
for (int j=0;j<weishu;j++){
int w=a[j]*i+r;
r=w/10;
a[j]=w%10;
b[j]=b[j]+w%10;
}
while (r){
a[weishu++]=r%10;
b[weishu]=b[weishu]+a[weishu];
r/=10;
}
}
}
for (int i=weishu-1;i>=1;i--){
cout<<b[i];
}
return 0;
}
输入 输出 正确
5 01010 153
1 (无) 1