描述
某人有好多披萨,他想知道所有披萨的面积之和
每个披萨可以看作半径为 r, 圆心角为 α 度的扇形,请你求出所有披萨的面积之和
输入
输入第一行为一个整数 n(1≤n≤100) 表示披萨个数
接下来的 n 行,每行两个整数 r, α (1≤r≤100,1≤α≤360) ,代表每个披萨的半径和圆心角(单位为度)
输出
输出一行,代表所有披萨的面积和(以四舍五入的方式保留三位小数)
输入样例 1
2
1 360
2 180
输出样例 1
9.425
提示
本题对答案精度要求较高,请注意变量类型或计算方式对答案精度的影响
请尽量提高圆周率的精度!
圆周率的精确位数也会对答案造成影响(例如仅保留6位数下,经过乘法以及多次累加的扩大,误差足以进入三位小数),可以尝试用数学函数计算圆周率
主要的噱头就是用数学函数计算圆周率,其实如果想偷懒的话,直接定义一个3.1415926535,提交还是可以过的。我们使用莱布尼茨级数公式,可以得到以下公式来计算圆周率:Pi = 4*(1-1/3+1/5-1/7+……)
#include <iostream>
using namespace std;
void PI(double Pi)
{
double Pi = 0;
double i = 1;
double r = 1;
for(int ix = 1; ix < 999999999; ix++)
{
if(ix%2 !=0) i = 1;
else i = -1;
Pi += i*1/r;
r += 2;
}
Pi *= 4;
printf("%.15lf",Pi);
}
由于int类型,精度不是很好。
#include <iostream>
#include <iomanip>
using namespace std;
#define Pi 3.1415926535
int main()
{
int n, r, a, i;
double S = 0;
cin >> n;
for(i = 0; i < n; i++)
{
cin >> r >> a;
S += (double)a/360 * Pi *r *r;
}
cout << fixed << setprecision(3) << S << endl; //该函数可以使浮点数保留n位数字
}