1613 - 弹地小球
时间限制 : 1 秒
内存限制 : 32 MB
一个小球,从高为H的地方下落,下落弹地之后弹起高度为下落时的一半,比如第一次弹起高度为H/2,如此往复,计算从小球H 高度下落到第n 次弹地往返的总路程。
题目输入
输入第一行为样例数m,接下来m行每行两个整数H和n,n不超过5。
题目输出
输出m行,表示所求总路程,结果保留小数点后两位。
输入/输出样例
输入格式
1 5 2
输出格式
10.00
C语言解答
#include<stdio.h> int main() { int a,i,j; double d=0.0,b,c; scanf("%d",&a); for(i=0;i<a;i++) { scanf("%lf%lf",&b,&c); d=b; for(j=2;j<=c;j++) { b=b/2.0; d=b*2.0+d; } printf("%.2f\n",d); } return 0; }
C++解答
#include <cstdio> #include <cmath> double fun(int n) { if (1 == n) return 1; else return fun(n - 1) + 1.0 / pow(2.0, n - 2); } int main() { //freopen("test.in", "r", stdin); //freopen("test.out", "w", stdout); int t; scanf("%d", &t); while (t--) { int h, n; scanf("%d %d", &h, &n); printf("%.2f\n", fun(n) * h); } return 0; }