7-15 计算圆周率 (15 分)
1. 题目摘自
https://pintia.cn/problem-sets/14/problems/795
2. 题目内容
根据下面关系式,求圆周率的值,直到最后一项的值小于给定阈值。
输入格式:
输入在一行中给出小于1的阈值。
输出格式:
在一行中输出满足阈值条件的近似圆周率,输出到小数点后6位。
输入样例:
0.01
输出样例:
3.132157
3. 源码参考
#include <iostream>
#include <iomanip>
using namespace std;
int fact1(int n);
int fact2(int n);
int main()
{
double s, a, b;
int i, n;
cin >> a;
s = 1;
for(i = 1; ; i++)
{
b = 1.0 * fact1(i) / fact2(i);
s += b;
if(b < a)
{
break;
}
}
cout << fixed << setprecision(6) << s * 2 << endl;
return 0;
}
int fact1(int n)
{
int i, s;
s = 1;
for(i = 1; i <= n; i++)
{
s *= i;
}
return s;
}
int fact2(int n)
{
int i, s;
s = 1;
for(i = 0; i < n; i++)
{
s *= (3 + i * 2);
}
return s;
}