关于阶乘求和分析
今天老师出了一道题,要我们写出1~
20阶乘之和的代码,s=1!+2!+3!+……+18!+19!+20!想了半天没想到咋分析请教一下咩
今天老师出了一道题,要我们写出1~
20阶乘之和的代码,s=1!+2!+3!+……+18!+19!+20!想了半天没想到咋分析请教一下咩
2017-09-19
#include<stdio.h>
#define MAXN 100
int ans[MAXN],num[MAXN];
int cnt_ans,cnt_num;
void add()
{
int i;
int jinwei=0;
for(i=0;i<cnt_num;i++)
{
int temp=ans[i]+num[i]+jinwei;
ans[i]=temp%10;
jinwei=temp/10;
}
cnt_ans=cnt_num;
if(jinwei>0)
{
ans[i]=jinwei;
cnt_ans++;
}
}
void factorial(int n)
{
int i;
int jinwei=0;
for(i=0;i<cnt_num;i++)
{
int temp=num[i]*n+jinwei;
num[i]=temp%10;
jinwei=temp/10;
}
if(jinwei>0)
{
num[i]=jinwei;
cnt_num++;
}
}
void print()
{
int i;
for(i=cnt_ans-1;i>=0;i--)
{
printf("%d",ans[i]);
}
printf("\n");
}
int main()
{
int i;
ans[0]=num[0]=1;
cnt_ans=cnt_num=1;
for(i=2;i<=20;i++)
{
factorial(i);
add();
}
print();
}举报