问题及代码:
Problem Description
Fred Mapper is considering purchasing some land in Louisiana to build his house on. In the process of investigating the land, he learned that the state of Louisiana is actually shrinking by 50 square miles each year, due to erosion caused by the Mississippi
River. Since Fred is hoping to live in this house the rest of his life, he needs to know if his land is going to be lost to erosion.
After doing more research, Fred has learned that the land that is being lost forms a semicircle. This semicircle is part of a circle centered at (0,0), with the line that bisects the circle being the X axis. Locations below the X axis are in the water. The
semicircle has an area of 0 at the beginning of year 1. (Semicircle illustrated in the Figure.)
Input
The first line of input will be a positive integer indicating how many data sets will be included (N).
Each of the next N lines will contain the X and Y Cartesian coordinates of the land Fred is considering. These will be floating point numbers measured in miles. The Y coordinate will be non-negative. (0,0) will not be given.
Output
For each data set, a single line of output should appear. This line should take the form of:
“Property N: This property will begin eroding in year Z.”
Where N is the data set (counting from 1), and Z is the first year (start from 1) this property will be within the semicircle AT THE END OF YEAR Z. Z must be an integer.
After the last data set, this should print out “END OF OUTPUT.”
Notes:
1. No property will appear exactly on the semicircle boundary: it will either be inside or outside.
2. This problem will be judged automatically. Your answer must match exactly, including the capitalization, punctuation, and white-space. This includes the periods at the ends of the lines.
3. All locations are given in miles.
Sample Input
2 1.0 1.0 25.0 0.0
Sample Output
Property 1: This property will begin eroding in year 1. Property 2: This property will begin eroding in year 20. END OF OUTPUT.
/* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:team.cpp *作 者:冷基栋 *完成日期:2015年2月15日 *版 本 号:v1.0 */ #include<iostream> #include<cmath> using namespace std; const double pi=3.1415927; int main() { int i=1,n; int year; double x,y,r,area; cin>>n; while(n--) { cin>>x>>y; r=x*x+y*y; area=pi*r/2.0; year=ceil(area/50.0); cout<<"Property "<<i++<<":"; cout<<" This property will begin eroding in year "<<year<<". "<<endl; } cout<<"END OF OUTPUT. "; return 0; }
运行结果:
知识点总结:
Source: Mid-Atlantic USA 2001
题目大意:弗雷德先生正在考虑在路易斯安娜州买一块地造房子,在土地调查中,他了解到由于密西西比河的侵蚀,路易斯安那州正以每年50平方英里的速度变小。弗雷德先生想知道他买的那块地是否会被侵蚀掉,经过进一步的研究,弗雷德先生发现将要被侵蚀的土地为半圆形,半圆是一个以(0,0)为中心的圆的一半,半圆的直边是x轴。x轴以下的部分在水中,第一年开始时,圆的面积是0,半圆如图所示。第一行输入一个整数n,表示有几组测试数据,接下来有n行,每行是(x,y)的坐标,弗雷德正在考虑地皮的位置,坐标值是以英里为单位的浮点数,坐标y不会为负数,这两个数不会都为0,输出经过多少年后,弗雷德的房子会被淹没。
算法分析:有(x,y)坐标可求出半径r,然后就可以求出面积,利用循环语句来求出年数,(也可以用面积除以50)。
Math.ceil()
Math.ceil()是常见编程语言中的常用代码,ceil() 方法执行的是向上取整计算,它返回的是大于或等于函数参数,并且与之最接近的整数。[
Math.ceil(x)
参数:X(必需)
例如:
Math.ceil(12.2)//返回13
Math.ceil(12.7)//返回13
Math.ceil(12.0)// 返回12
学习心得:
自己不要把题目想复杂
好好学习 天天向上