7-15 计算圆周率 (15 分)
根据下面关系式,求圆周率的值,直到最后一项的值小于给定阈值。
输入格式:
输入在一行中给出小于1的阈值。
输出格式:
在一行中输出满足阈值条件的近似圆周率,输出到小数点后6位。
输入样例:
0.01
输出样例:
3.132157
作者: 杨起帆
单位: 浙江大学城市学院
时间限制: 400 ms
内存限制: 64 MB
代码长度限制: 16 KB
#include<iostream>
using namespace std;
int main()
{
int i = 1;
double up=1.0f;
double down=1.0f;
double sum=1.0f;//右边式子第一项为1,在此直接处理
double n;
cin>>n;//输入阈值
do{
up*=i;//分子
down*=(2.0*i+1.0);//分母(奇数相乘,从1*3开始)
i++;
sum+=(up/down);//每一项的和累加
}while(up/down>=n);//如果当前项小于阈值,退出循环
printf("%.6lf",2.0*sum);//最后不要忘记乘以2
return 0;
}