版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40695895/article/details/89464208
#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;
}