网上的三行求圆周率代码改的,原理不太清楚;
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
const int MAX 1000000//f数组要足够大,否则计算较多位数时可能会发生数组越界
const int WEI 10004//小数点后位数(必须是4的倍数),因为每次直接输出四位
int a,b,c,d,e,f[MAX],g;
int main()
{
a=10000;
b=c=WEI/4*14;
d=e=0;
g=c*2;
int top=0;
int num[WEI];
for(int i=0;i<c;i++) f[i]=2000;//初始化数组
while (c)
{
b = c;
while(1)
{
d+=f[b]*a;
g--;
f[b]=d%g;
d/=g;
g--;b--;
if(b==0) break;
d*=b;
}
c-=14;
int tmp=e+d/a,xx[4],h=3;
printf("%d",e+d/a);//每次直接输出四位
e=d%a;
d=0;
g=c*2;
}
}