c语言练习:POJ 1005 我想我需要一艘船屋(I Think I Need a Houseboat)

题目相关信息

描述

弗雷德·马珀(Fred Mapper)正在考虑在路易斯安那州购买一些土地来建造他的房子。在调查这片土地的过程中,他了解到,由于密西西比河造成的侵蚀,路易斯安那州实际上每年都在缩小50平方英里。由于弗雷德希望一辈子都住在这所房子里,他需要知道他的土地是否会因侵蚀而消失。

在做了更多的研究之后,弗雷德了解到正在失去的土地形成了一个半圆形。这个半圆是以 (0,0) 为中心的圆的一部分,将圆平分的线是 X 轴。X 轴下方的位置在水中。半圆在第 1 年开始时的面积为 0。

输入

输入的第一行将是一个正整数,表示将包含多少个数据集 (N)。接下来的 N 条线将包含 Fred 正在考虑的土地的 X 和 Y 笛卡尔坐标。这些将是以英里为单位的浮点数。Y 坐标将为非负数。(0,0) 将不予给出。

输出

对于每个数据集,应显示一行输出。此行应采用以下形式:“属性 N:此属性将在 Z 年开始侵蚀。其中 N 是数据集(从 1 开始计数),Z 是第一年(从 1 开始),此属性将在半圆内 在年底 Z 内。 Z 必须是整数。在最后一个数据集之后,这应该打印出“输出结束”。

示例输入

2
1.0 1.0
25.0 0.0

示例输出

Property 1: This property will begin eroding in year 1.
Property 2: This property will begin eroding in year 20.
END OF OUTPUT.

提示

1.No 属性将正好出现在半圆边界上:它要么位于内部,要么位于外部。
2.本题将自动判断。您的答案必须完全匹配,包括大小写、标点符号和空格。这包括行尾的句点。
3.所有地点均以英里为单位。

解题思路

初始化

定义整数(i, j, n, year)和浮点数(x, y, r, area, pi)变量。
i :用来追踪当前处理的“属性”的编号。
j :用作循环计数器。
n :要处理的“属性”的总数。
x 和 y 是每个“属性”的坐标。
r :存储距离的平方。
area :存储面积值。
pi 是一个近似的圆周率值。


输入

首先读取一个整数n,表示要处理的“属性”的数量。然后,对于每个“属性”,读取两个浮点数x和y。使用x和y的平方和来计算r,此处r是半径的平方。接着,使用r和pi来计算“面积”area,但这里的“面积”计算并不符合常规的几何定义,因为它只是r的一半乘以pi。


预测侵蚀开始年份

将“面积”area除以50.0,然后使用ceil函数向上取整得到year。


输出

对于每个“属性”,输出其编号和预测的侵蚀开始年份。最后,输出“END OF OUTPUT.”以表示输出结束。
 

代码

#include<stdio.h>
#include<math.h>
int main()
{
	int i=1,j,n;
	int year;
	double x,y,r,area,pi =3.14;
	scanf("%d", &n);
	for(j=0;j<n;j++)
	{
		scanf("%lf %lf", &x, &y);
		r = x * x + y * y;
		area = pi * r/2.0;
		year = (int)ceil(area/50.0);
		printf("Property %d:",i++);
		printf("This property will begin eroding in year %d.\n", year);
	}
		printf("END OF OUTPUT.\n");
		return 0;
}

代码参考自:http://t.csdnimg.cn/mT72w

这次就到这里了,与大家共勉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七月初七淮水竹亭~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值