题目问答
  • 板块学术版
  • 楼主2008shitou
  • 当前回复10
  • 已保存回复10
  • 发布时间2020/5/17 14:16
  • 上次更新2023/11/7 02:16:59
查看原帖
题目问答
263701
2008shitou楼主2020/5/17 14:16
用高精度计算出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
2020/5/17 14:16
加载中...