首页 > 代码库 > 15:阶乘和
15:阶乘和
15:阶乘和
- 查看
- 提交
- 统计
- 提问
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
用高精度计算出S=1!+2!+3!+…+n!(n≤50)
其中“!”表示阶乘,例如:5!=5*4*3*2*1。
输入正整数N,输出计算结果S。
- 输入
- 一个正整数N。
- 输出
- 计算结果S。
- 样例输入
5
- 样例输出
153
- 来源
- NOIP1998复赛 普及组 第二题
1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<cstring> 5 using namespace std; 6 int a[10001]={1}; 7 int ans[100001]={0}; 8 char n[1001]; 9 int en[1001];10 int lans=1;11 int la=1;12 int x;13 int main()14 {15 int n;16 cin>>n;17 int x=0;18 for(int i=1;i<=n;i++)//寻找每一个数 19 {20 memset(a,0,sizeof(a));21 a[0]=1;22 for(int k=1;k<=i;k++)//求阶乘 23 {24 for(int j=0;j<la;j++)25 {26 a[j]=a[j]*k+x;27 x=a[j]/10;28 if(x>0&&j==la-1)29 la++;30 a[j]=a[j]%10;31 }32 33 }34 int l=0;35 x=0;36 while(l<=la||l<=lans)37 {38 ans[l]=ans[l]+a[l]+x;39 x=ans[l]/10;40 if(x>0)41 lans++;42 ans[l]=ans[l]%10;43 l++;44 }45 }46 int flag=0;47 for(int i=lans;i>=0;i--)48 {49 if(ans[i]==0&&flag==0)50 continue;51 else flag=1;52 cout<<ans[i];53 }54 return 0;55 }
15:阶乘和
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。