阶乘之和
来源:互联网 发布:淘宝网开店哪里进货源 编辑:程序博客网 时间:2024/06/07 07:51
题目描述
用高精度计算出S=1!+2!+3!+…+n!(n≤50)
其中“!”表示阶乘,例如:5!=5*4*3*2*1。
输入输出格式
输入格式:一个正整数N。
输出格式:一个正整数S,表示计算结果。
输入输出样例
输入样例#1:
3
输出样例#1:
直接上代码:
9用高精度算法
直接上代码:
#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>using namespace std;struct number{int x[1000];int len;number(int a=0){if(a==0){memset(x,0,sizeof(x));len=0;}if(a==1){x[0]=1;len=1;}}void print(){for(int i=len-1;i>=0;i--)printf("%d",x[i]);printf("\n");}};number chengfa(number a,int n){number res;res.len=a.len;for(int i=0;i<res.len;i++){res.x[i]+=a.x[i]*n;res.x[i+1]+=res.x[i]/10;res.x[i]%=10;}while(res.x[res.len]){res.x[res.len+1]+=res.x[res.len]/10;res.x[res.len]%=10;res.len++;}return res;}number jiafa(number ans,number a){number res;res.len=max(ans.len,a.len);for(int i=0;i<res.len;i++){res.x[i]+=ans.x[i]+a.x[i];res.x[i+1]+=res.x[i]/10;res.x[i]%=10;}while(res.x[res.len]){res.x[res.len+1]+=res.x[res.len]/10;res.x[res.len]%=10;res.len++;}return res;}number getans(int n){//S=1!+2!+3!+…+n!number ans;for(int i=1;i<=n;i++){number res=1;for(int j=1;j<=i;j++)res=chengfa(res,j);ans=jiafa(ans,res);}return ans;}int main(){int i,j,k,m,n;scanf("%d",&n);number ans;ans=getans(n);ans.print();return 0;}
0 0
- 阶乘之和
- 阶乘之和
- 阶乘之和
- 阶乘之和
- 【阶乘之和】
- 阶乘之和
- 阶乘之和
- 阶乘之和
- 阶乘之和
- 阶乘之和
- 阶乘之和
- 阶乘之和
- 阶乘之和
- 阶乘之和
- 阶乘之和
- 阶乘之和
- 阶乘之和
- 阶乘之和
- 文章标题
- Android 再按一次退出程序三种办法
- 读懂ST官方网页,有效获取有用资料
- 单链表反转--Java实现
- 伸缩立方
- 阶乘之和
- 操作系统
- 当用python读取几十万行文本时
- 学习笔记_序列化
- READING NOTE: Face Detection with End-to-End Integration of a ConvNet and a 3D Model
- 王学岗自定义控件(三)(待续)
- OpenGL环境的配置及其一个测试Demo
- 学点JS实例-自动刷新跳转页面(1)
- UVa OJ 12186 - Another Crisis