急!!!!一道微机编程题(高精度运算)

来源:百度知道 编辑:UC知道 时间:2024/05/19 13:53:03
用高精度计算出S=1!+2!+3!+……+N!(N<=50),其中“!”表示阶乘。如5!=5*4*3*2*1。输入正整数N,输出计算的结果S。

#include<stdio.h>
#include<stdlib.h>
#define N 1000 //要计算的N
long s[N]={1,1},n=N,t=2,a=1,b=0;
int main()//雨中飞燕之作
{
for(;a<=*s||(++t<=n?(b=0,a=1):0);(*s==a++&&b)?(*s)++:0)
s[a]=(b+=s[a]*t)%10000,b/=10000;
for(printf("%d",s[*s]);--*s>0;)printf("%04d",s[*s]);
system("pause");
return 0;
}
哇哈哈...强人写的啊..我都看不懂..