您的位置:首页 > 其它

阶乘和

2016-12-10 15:25 239 查看
总时间限制: 1000ms 内存限制: 65536kB描述
用高精度计算出S=1!+2!+3!+…+n!(n≤50)

其中“!”表示阶乘,例如:5!=5*4*3*2*1。

输入正整数N,输出计算结果S。

输入一个正整数N。输出计算结果S。样例输入
5

样例输出
153

来源NOIP1998复赛 普及组 第二题
代碼實現:

#include<cstdio>
int n,a,ans[60000],fz[50000],jc[50000]={1,1};
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
for(int j=1;j<=jc[0];j++){
jc[j]=jc[j]*i+fz[j];fz[j]=0;
if(jc[j]>9){
fz[j+1]+=jc[j]/10;
jc[j]%=10;
if(j==jc[0]) ++jc[0];
}
}
if(jc[0]>ans[0]) ans[0]=jc[0];
for(int i=1;i<=ans[0];i++){
ans[i]+=jc[i];
if(ans[i]>9){
ans[i+1]+=ans[i]/10;
ans[i]%=10;
if(i==ans[0]) ++ans[0];
}
}
}
for(int i=ans[0];i>0;i--) printf("%d",ans[i]);
printf("\n");
return 0;
}


。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: