1011: Counting Pixels

原題鏈接

#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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章