單純考邏輯
題目:
一球從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;
}