#include<iostream>
using namespace std;
/*
解題思路:
統計四分之一個圓的像素點數即可,從邊緣向內檢測像素點是否在圓的邊界上,在的話y1-1,否則x1+1繼續檢測,直到x1=x(這裏統計左上四分之一圓)
注意要使用long long int
*/
int main() {
int x, y, r;
long long int* results = new long long int[10000];
int count = 0;
while (true) {
cin >> x >> y >> r;
if (x == y && y == r && r == 0) {
break;
}
int x1 = x - r + 1;
int y1 = y;
long long int sum = 0;
while (x1 <= x && y1 < y+r){
if ((x1 - x)*(x1 - x) + (y1 - y)*(y1 - y) - r*r < 0) {
sum += x - x1 + 1;
y1++;
}
else{
x1++;
}
}
results[count] = 4 * sum;
count++;
}
for (int i = 0; i < count; i++) {
cout << results[i] << endl;
}
delete[] results;
return 0;
}
1011: Counting Pixels
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.