且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

poj 1005 I Think I Need a Houseboat

更新时间:2022-03-03 17:36:28

有一个水题,题目读懂就可以了,千万注意是“半圆”!!!


题目大意:已知一个圆心为(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;
}