题目
小球自由落体
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第n次落地时,共经过多少米?第n次反弹多高?
数据范围: 1≤n≤100 1≤n≤100
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512M
输入描述:
一行,一个整数n (1<=n<=10)。
输出描述:
输出两个浮点数ans1,ans2。ans1为第n次落地时,共经过的距离;ans2为第n次反弹的高度。答案应与标准答案误差小于1e-5。两个数间以空格相间。
示例1
输入例子:
1
输出例子:
100.000000 50.000000
示例2
输入例子:
10
输出例子:
299.609375 0.097656
解题思路
public class Program {
public static void Main() {
string line;
while ((line = System.Console.ReadLine ()) !=
null) { // 注意 while 处理多个 case
int num = int.Parse(line);
double sum = 0;
double height = 100f;
for (int i = 0; i < num; i++) {
sum += height;//下来
height = height / 2.0f;
sum += height;//上去
}
sum -=height;//总和是减去球上去的最后一段
System.Console.WriteLine("{0} {1}",sum,height);
}
}
}