1. 程式人生 > >C++ Zoj1049 I Think I Need a Houseboat

C++ Zoj1049 I Think I Need a Houseboat

題目大意:

       判斷什麼時候50*z(z為年數)形成的半圓,能把給出的(x, y)包含進去,就是(x,y)座標什麼時候能在這個半圓內。

       求出這個z

思路:

         求以(x,y)-(0,0)為半徑,(0,0)為圓心的半圓的面積,然後除以50,向上取整ceil,得到的就是z

#include <iostream>
#include <cmath>
using namespace std;

const double PI = acos(double(-1));

int main(int argc, const char * argv[]) {
    double x, y, area; // 儲存x,y座標
    int n, z, kcase = 1; // n儲存測試組數,z儲存年數, kcase跟蹤測試組數
    
    cin >> n;
    while(n--) { // 測試組數
        cin >> x >> y;
        // 半圓面積公式:s=1/2 * PI * r * r;(r * r = x * x + y * y)
        area = PI * (x * x + y * y) / 2;
        z = ceil(area / 50); // 向上取整
        cout << "Property " << kcase << ": This property will begin eroding in year " << z << "." << endl;
        kcase++;
    }
    return 0;
}

執行結果: