题目描述
在一个平面上给定 n 个同心圆。
如下图所示:
QQ截图20210604161925.png
这些同心圆构成的图形是蓝黄相间的,其中最外面的圆是蓝色。
请问,这 n 个同心圆构成的图形中,蓝色部分的总面积是多少?
输入格式
第一行包含整数 n。
第二行包含 n 个整数,r1,r2,…,rn,表示各个圆的半径。
输出格式
输出蓝色部分的总面积。
结果保留六位小数。
数据范围
1≤n≤100,
1≤ri≤1000,
所有圆的半径两两不同。
样例
输入样例1:
1
1
输出样例1:
3.141593
输入样例2:
3
1 4 2
输出样例2:
40.840704
看代码
C++ 代码
#include <iostream>
#include <algorithm>
#include <iomanip>
using namespace std;
const double w=3.1415926535897932384626433;
int s[110];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>s[i];
}
double ans=0;
sort(s+1,s+1+n);
if(n%2==0)
{
for(int i=2;i<=n;i+=2)
{
ans+=w*(s[i]*s[i]-s[i-1]*s[i-1]);
}
}
else
{
for(int i=1;i<=n;i+=2)
{
ans+=w*(s[i]*s[i]-s[i-1]*s[i-1]);
}
}
cout<<fixed<<setprecision(6)<<ans;
return 0;
}