765
技术社区[云栖]
poj 1005 I Think I Need a Houseboat
有一个水题,题目读懂就可以了,千万注意是“半圆”!!!
题目大意:已知一个圆心为(0,0),半径随时间增长的位于X轴上方的半圆,初始面积为0,每年的面积增加50,给出一个坐标,求该坐标在第几年被该半圆覆盖。
代码:
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
int i;
double x,y;
int year;
for(i=1;i<=n;i++)
{
scanf("%lf%lf",&x,&y);
//如果以(x,y)为半径的圆面积小于水域面积,就被淹没了,这样就不用求水域半径了
year=(int)((x*x+y*y)*3.1415926/100+1); //根据坐标计算年份
printf("Property %d: This property will begin eroding in year %d.\n",i,year);
}
printf("END OF OUTPUT.\n");
return 0;
}
这段代码写的繁琐点,不过思路更清晰
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
int i;
double x,y;
int year;
int area;
double s;
for(i=1;i<=n;i++)
{
scanf("%lf%lf",&x,&y);
//如果以(x,y)为半径的圆面积小于水域面积,就被淹没了,这样就不用求水域半径了
s=3.1415926*(x*x+y*y)/2;
area=0;
for(year=1; ;year++)
{
area+=50;
if(s<area)
break;
}
printf("Property %d: This property will begin eroding in year %d.\n",i,year);
}
printf("END OF OUTPUT.\n");
return 0;
}
最后更新:2017-04-03 14:53:43