关于阶乘求和分析
今天老师出了一道题,要我们写出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(); }
举报