一球从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;
} 
posted @ 2020-09-21 22:04  DJ同学  阅读(2991)  评论(0编辑  收藏  举报