一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第n次落地时,共经过多少米?第n次反弹多高?(n<=10)
单纯考逻辑
题目:
一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第n次落地时,共经过多少米?第n次反弹多高?(n<=10)
输入描述:
一行,一个整数n (1<=n<=10)。
输出描述:
输出两个浮点数ans1,ans2。ans1为第n次落地时,共经过的距离;ans2为第n次反弹的高度。答案应与标准答案误差小于1e-5。两个数间以空格相间。
输入例子1:
1
输出例子1:
100.000000 50.000000
输入例子2:
10
输出例子2:
299.609375 0.097656
//第一次落地比较特殊单独计算,因为路径只有下落,没有反弹
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;//1~10
scanf("%d",&n);
//算第n次落地时,共经过的距离
double sum=100;
double cur_h=50;
for(int i = 1;i < n;i++){
sum+=2*cur_h;
cur_h/=2;
}
printf("%.6f %.6f",sum,cur_h);
return 0;
}