本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2022-04-10 20:59:05
解题思路:
先按递减的顺序排序,然后依次枚举每个半径,因为他是一红一蓝一红一蓝......
所以每次枚举时 $i$ 要每次 $+2$。
求圆的面积需要知道 $π$,这里设 $PI = \operatorname{acos(-1)}$($\operatorname{acos()}$ 是反余弦函数,$\operatorname{acos(π)} = -1$,所以 $π = $ $\operatorname{acos(-1)}$)。
圆的面积计算方法:
【AC记录】
AC Code:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
const double PI = acos(-1);
const int N = 110;
int n;
int r[N];
int main() {
cin >> n;
for (int i = 0; i < n; ++ i) cin >> r[i];
sort (r , r + n , greater<int>());\/\/排序,按递减的顺序排
double res = 0;
for (int i = 0; i < n; i += 2)\/\/因为红色的中间隔着一个蓝色的,所以每次i+=2
res += PI * (r[i] * r[i] - r[i + 1] * r[i + 1]);\/\/计算他的面积,用他本身的面积减去他包含的面积
printf ("%.6lf" , res);\/\/输出保留6为小数
return 0;
}

鲁ICP备2025150228号