题目描述
用高精度计算出 S=1!+2!+3!+⋯+n!(n≤50)。
其中“!”表示阶乘,例如5!=5×4×3×2×1。
输入格式
一个正整数 n。
输出格式
一个正整数 S,表示计算结果。
输入输出样例
输入
3
输出
9
利用数组存储数的每一位。
#include <stdio.h>
int main()
{
int i,j,n,w,x,temp;//w,x为进位
int num[100]={0},sum[100]={0};
num[0] = 1;
scanf("%d",&n);
for(i = 1;i <= n;i++)
{
w = 0;
for(j = 0;j < 100;j++)//阶乘
{
temp = num[j];
num[j] = ((num[j]*i)+ w) % 10;
w = ((temp*i) + w) / 10;
}
x = 0;
for(j = 0;j < 100;j++)//阶乘之和
{
temp = sum[j];
sum[j] = (sum[j]+num[j]+x) % 10;
x = (temp+num[j]+x) / 10;
}
}
i = 99;
while(sum[i]==0&&i >= 0)
i--;
for(;i >= 0;--i)
printf("%d",sum[i]);
return 0;
}