c语言:1到100的阶乘之和,100用N输入

来源:百度知道 编辑:UC知道 时间:2024/06/07 19:51:15

#include <stdio.h>
#include <stdlib.h>
#define MAX 200
int f[MAX]={0},sum[MAX]={0};//大整数,每个int存一个十进制数字,从低位到高位

void main(void)
{

int i,j,n;
f[0]=1;

printf("Input N: ");
scanf("%d",&n);//输入N
for(j=1;j<=n;j++)
{
//calc factorial,每位乘j
for(i=0;i<200;i++)
f[i]*=j;

//进位
for(i=0;i<199;i++)
{
f[i+1]+=f[i]/10;
f[i]%=10;
}

//add to sum
for(i=0;i<200;i++)
sum[i]+=f[i];

//sum进位
for(i=0;i<199;i++)
{
sum[i+1]+=sum[i]/10;
sum[i]%=10;
}

}

//从最高位开始输出
//先找到最高位
printf("\n\nThe result is:\n");
i=199;
while(sum[i]==0)
i--;
while(i>=0)
printf("%d",sum[i--]);

system("pause");
}