欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

阶乘和(信息学奥赛一本通-T1173)

发布时间:2025/3/17 编程问答 39 豆豆
生活随笔 收集整理的这篇文章主要介绍了 阶乘和(信息学奥赛一本通-T1173) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

【题目描述】

用高精度计算出S=1!+2!+3!+…+n!(n≤50),其中“!”表示阶乘,例如:5!=5×4×3×2×1。

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

【输入】

一个正整数n。

【输出】

计算结果S。

【输入样例】

5

【输出样例】

153

【源程序】

#include<iostream> #include<cstring> using namespace std; int a[500],sum[500]; void mul(int x)//高精乘 {int i;for(i=1;i<=a[0];i++)a[i]*=x;for(i=1;i<=a[0];i++){a[i+1]+=a[i]/10;a[i]%=10;}i=a[0];while(a[i+1]>0)i++;a[0]=i;i=a[0];while(a[i]>10){a[i+1]+=a[i]/10;a[i]%=10;i++;}a[0]=i; } void add()//高精加 {int i;if(sum[0]>a[0])sum[0]=sum[0];elsesum[0]=a[0];for(i=1;i<=sum[0];i++){sum[i]+=a[i];sum[i+1]+=sum[i]/10;sum[i]%=10;}if(sum[sum[0]+1]>0)sum[0]+=1; } int main() {int n;int i;cin>>n;a[0]=1;a[1]=1;sum[0]=1;sum[1]=0;for(i=1;i<=n;i++){mul(i);//计算阶乘add();//计算阶乘和}for(i=sum[0];i>=1;i--)cout<<sum[i];cout<<endl;return 0; }

 

总结

以上是生活随笔为你收集整理的阶乘和(信息学奥赛一本通-T1173)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。