#include
long a=10000,b,c=2800,d,e,f[2801],g;
main()
{
for(;b-c;)
f[b++]=a/5;
for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)
for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);
}
计算结果:
31415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185
//化简版
#include
long a=10000;
long b,c,d,e,g;
long f[2801];
main(){
int i;
for(i=0;i<2801;i++)
f[i]=2000;
for(c=2800;c!=0;c-=14){
d=0;
g=c*2-1;
b=c;
while(b){
d+=f[b]*a;
f[b]=d%g;
d/=g;
g-=2;
if(--b>0)
d*=b;
}
printf("%.4d",e+d/a);
e=d%a;
}
}
阅读(1889) | 评论(0) | 转发(0) |