本文主要是介绍OpenJudge - 15:阶乘和,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
总时间限制:
1000ms
内存限制:
65536kB
描述
用高精度计算出S=1!+2!+3!+…+n!(n≤50)
其中“!”表示阶乘,例如:5!=5*4*3*2*1。
输入正整数N,输出计算结果S。
输入
一个正整数N。
输出
计算结果S。
样例输入
5
样例输出
153
关键代码
#include<stdio.h>
int main()
{int n,a[35665],count,j,temp,ttemp,sum[35665] = {0},scount = 0;a[0] = 1;scanf("%d",&n);if(n == 0||n == 1){printf("1");return 0;}for(int p = 1;p<=n;p++){count = 1;j = 0;for(int i = 0;i<35665;i++){if(i == 0){a[i] = 1;}elsea[i] = 0;}for(int i = 1;i<=p;i++){for(int k = 0;k<count;k++){temp = a[k] * i + j;a[k] = temp%10;j = temp/10;}while(j){a[count++] = j%10;j /= 10;}}if(scount = 0){for(int pp = 0;pp<count;pp++){sum[pp] = sum[pp] + a[pp];scount++;}}else{ttemp = 0;scount = scount>=count?scount:count;for(int pp = 0;pp<scount;pp++){ttemp = sum[pp] + a[pp] + ttemp;sum[pp] = ttemp%10;ttemp = ttemp/10;}while(ttemp){sum[scount++] = ttemp%10;ttemp = ttemp/10;}}}for(int y = scount-1;y>=0;y--){printf("%d",sum[y]);}return 0;}
这篇关于OpenJudge - 15:阶乘和的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!