阶乘和
描述用高精度计算出S=1!+2!+3!+…+n!(n≤50)
其中“!”表示阶乘,例如:5!=5*4*3*2*1。
输入正整数N,输出计算结果S。输入格式
输入正整数N
输出格式
输出计算结果S
测试样例
输入
6
输出
873
Solution:
就当是练习高精度好了…
#include<stdio.h>
#define M 200
int A[M+5],sum[M+5];
int main(){
int n;
scanf("%d",&n);
A[1]=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=M;j++){
A[j]*=i;
}
for(int j=1;j<=M;j++)
if(A[j]>=10){
A[j+1]+=A[j]/10;
A[j]%=10;
}
for(int j=1;j<=M;j++){
sum[j]+=A[j];
if(sum[j]>=10){
sum[j+1]+=sum[j]/10;
sum[j]%=10;
}
}
}
int ed;
for(ed=M;ed>=1;ed--)
if(sum[ed]!=0)break;
for(int i=ed;i>=1;i--)
printf("%d",sum[i]);
puts("");
return 0;
}
最后仍然要吐槽这越来越迷得评测机…