题目描述
1.
小球自由落体
一球从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
输出例子:
100.000000 50.000000
示例2
输入例子:
10
输出例子:
299.609375 0.097656
这种题是求两个数,思考的时候建议分别去想怎么计算出来,而不是想要很巧妙的两个一起解决。分别计算出来会好想些。
#include <iostream>
#include<cstdio>
using namespace std;
int main() {
int n;
float s=100;
float ans1=0,ans2=100;
cin>>n;
while(n--){
ans2/=2;
if(n){
s+=ans2*2;
}
}
ans1=s;
printf("%.6f %.6f",ans1,ans2);
}