POJ 1005 I Think I Need a Houseboat

来源:互联网 发布:php就业形势 编辑:程序博客网 时间:2024/06/09 22:22

【参考】http://blog.csdn.net/lijiecsu/article/details/7392994

【题意】密西西比河岸某处陆地因为河水侵蚀,每年陆地面积都在减少,每年减少50平方英里,减少的陆地面积呈半圆形,即该半圆形面积以每年50平方英里的速度增长。

在第一年初时,该半圆形面积为0,半圆形的圆心坐标为(0,0),现在的任务是给定一个坐标,求出该坐标在哪一年年底会被河水侵蚀。假设给定的坐标到圆心的距离不会等于半圆的半径。

【分析】

首先吐槽一下自己的英语太费了,连读个题都很麻烦......


这道题每年增长50平方英里,连半径都没给,看到的第一眼已经傻掉了。

实际上它始终是半圆,那就用πr^2=面积。


第一年:½πr^2=50 即 πr^2 = 100,  πr^2/100 = 1

第二年:πr^2 =200, πr^2/100 = 2

第三年:πr^2 =300, πr^2/100 = 3

以此类推。


πr^2 每年增长100;

对于给定的坐标,到圆心的距离平方为 d=x*x + y*y,计算πd /100;

因为d不会等于某个半径,所以   πd /100结果一定是一个带小数的数。

假设结果为n.m,则说明该坐标在第n年年底时还没被侵蚀,而在n+1年时会被侵蚀。


说白了就是个区间的估计,再用它是整数来确定。

【代码】

#include <cstdio>

#include <cstdlib>

#include <cmath>


using namespace std;


const double Pi=3.14159265358979;


int t,years;


int main(void)

{

scanf("%d",&t);

double x,y;

for (int i=1;t--;i++)

{

scanf("%lf%lf",&x,&y);

years=Pi*(x*x+y*y)/100;

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

}

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

return 0;

}

【小结】区间估计+整数确定的思想

0 0