欢迎访问==> 【考研OR保研】机试题
题目描述
一个小球,从高为 $H$ 的地方下落,下落弹地之后弹起高度为下落时的一半,比如第一次弹起高度为 $H/2$,如此往复,计算从小球 $H$ 高度下落到第 $n$ 次弹地,往返的总路程。
输入格式
第一行包含整数 $T$,表示共有 $T$ 组测试数据。
每组数据占一行,包含两个整数 $H$ 和 $n$。
输出格式
每组数据输出一行,一个结果,表示小球往返的总路程,保留两位小数。
数据范围
$1 \\le T \\le 10$,
$1 \\le H \\le 100$,
$1 \\le n \\le 5$
输入样例:
1
5 2
输出样例:
10.00
C++ 代码
#include <bits/stdc++.h>
using namespace std;
int T, n;
double H;
double s(double H, int n)
{
double cnt = H;
for(int i = 2; i <= n; i ++)
{
cnt += H;
H /= 2;
}
return cnt;
}
int main()
{
cin >> T;
while(T -- )
{
cin >> H >> n;
printf("%.2lf\n", s(H, n));
}
return 0;
}