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