您的位置:首页 > 其它

POJ 1005 I Think I Need a Houseboat

2015-03-02 22:16 465 查看
题目描述:
    一块地(可以等效成一个点),坐标为( x, y ),在原点( 0, 0 )处有一以原点为圆心的半圆形水域,该水域每年会延半圆的弧形方向向外均匀扩散50平方公里,问这块地会在几年内被水域吞没。

算法描述:
    设这块地会在n年内被吞没,吞没时半圆形水域的半径为r
    根据面积公式:50 * n = 1/2 ( π * r ^ 2 )
    根据坐标:r ^ 2 = x ^ 2 + y ^ 2

    解出 n = π * ( x ^ 2 + y ^ 2 ) / 100 ( 如果能整除,n = n; 如果不能整除,n = (int) n + 1 ) 

Code:

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
const double pi = acos( -1.0 ); //acos函数括号里应为浮点数,整型的编译器可以通过但OJ会CE
const double eps = 0.99999999; //用作结果不是整数的情况处理
int main()
{
int n;
double x, y;

scanf( "%d", &n );

for( int i = 1; i <= n; i++ )
{
scanf( "%lf%lf", &x, &y );

int years = (int)( pi * ( x * x + y * y ) / 100.0 + eps );

printf( "Property %d: This property will begin eroding in year %d.\n", i, years );
}

printf( "END OF OUTPUT.\n" );

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: