题意:
算几个同心圆中存在的红色面积,最外部圆上色为蓝色,然后一直红色蓝色交替上色至最内部圆。
思路:
我的思路是先将输入圆的半径由小到大进行一次sort排序,然后对圆的个数进行奇偶讨论,再根据交替上色求面积。
本人AC代码:
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
int n;
int R[105];
const double PI = acos(-1.0);
int main() {
while(~scanf("%d", &n)) {
double sum = 0;
for(int i = 1; i <= n; i++) scanf("%d", &R[i]);
sort(R + 1, R + n + 1);
for(int i = n; i >= 1; i--) {
double s = PI * R[i] * R[i];
if(n % 2 == 0) {
if(i % 2 != 0) s = 0 - s;
}
else {
if(i % 2 == 0) s = 0 - s;
}
sum += s;
}
printf("%.10lf\n", sum);
}
}