缩小的陆地

问题描述
  Fred正在考虑在路易斯安那州找一块土地在上面建造他的房子。在调查过程中,他了解到路易斯安那州的陆地正以每年50平方英里的速度缩小,原因是密西西比河对陆地的侵蚀。由于Fred希望他的余生都能居住在这所房子里,所以他需要知道他的土地是否会被河水侵蚀。
  Fred做了更多的研究后发现,正在损失的陆地呈现出一个半圆形的形状,这个半圆是以(0,0)为圆心的圆的X轴以上的部分,X轴以下的区域是河水,在第一年开始时这个半圆的面积是0。(如下图所示)
输入格式
  第一行是一个正整数表示接下来有多少组数据,以下的每一行代表一组数据,每组数据由两个浮点数组成,以空格隔开,分别代表Fred房子在平面内的坐标X和Y,单位是英里,其中Y>=0。
输出格式
  对于每一组输入数据,输出一个整数Z,代表Fred的房子会在第Z年中被河水侵蚀。如果在第Z年结束时Fred的房子正好在半圆的边界上,那么应该算作是在第Z+1年被侵蚀,返回Z+1。每个返回结果占一行。
样例输入
2
1.0 1.0
25.0 0.0
样例输出
1
20

思路:

       简单的两个公式:圆的面积和直角三角形的斜边长。先求出半径,在算出半圆的面积,在用循环依次的-50,记录年份的变量自增,当面积小于0就停止循环输出年数。

代码:

#include <stdio.h>
#include <math.h> 
#define P 3.1415926
main()
{
	int n,c=0;
	double x,y,s,r;
	scanf("%d",&n);
	while (n--)
	{
		c=0;
		scanf("%lf%lf",&x,&y);
		//半径r 
		r=sqrt(x*x + y*y);
		//面积 
		s=P * r*r ;
		//半圆面积 
		s=s/2;
		while (s>0)
		{
			c++;
			s=s-50; //每减一次50,则c+1,年份增1 
		}
		if (s==0)  //刚好减为0则要+1 
		printf("%d\n",c+1);
		else
		printf("%d\n",c);
		
	}
	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值