游客 Signup | Login
中文 | En

1613 - 弹地小球

一个小球,从高为H的地方下落,下落弹地之后弹起高度为下落时的一半,比如第一次弹起高度为H/2,如此往复,计算从小球高度下落到第次弹地往返的总路程。

Input

输入第一行为样例数m,接下来m行每行两个整数H和n,n不超过5。

Output

输出m行,表示所求总路程,结果保留小数点后两位。

Examples

Input

1
5 2

Output

10.00

Solution 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;
}

		

Solution 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;
}

Time Limit 1 second
Memory Limit 32 MB
Discuss Stats
上一题 下一题