C刷题记录-1019

题目描述

一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 保留两位小数

输入

M N

输出

它在第N次落地时反弹多高?共经过多少米? 保留两位小数,空格隔开,放在一行

样例输入

1000 5

样例输出

31.25 2875.00

 1 #include <stdio.h>
 2 #include <math.h>
 3 
 4 int main(){
 5 
 6   int N,i;
 7   float M,height,total_height ;
 8   scanf("%f %d",&M,&N);
 9   height = pow(0.5,N)*M;
10   /*
11   整个高度, 第一次落地时的高度=M, 然后第一次弹起至第二次落地走了 2 * 1/2M
12   然后第二次弹起到第三次落地 走了 2* 1/2 *1/2 M,所以第三次落地时 其实是第二次弹起
13   高度的两倍
14   |
15   |
16   |
17   |
18   | |
19   | |
20   | | |
21   | | |
22   1 2 3
23   */
24   total_height = M;
25   for (i = 1; i <= N-1;i ++){ //N次落地,其实是前面N-1次落地高度的2倍+M
26     total_height += pow(0.5,i)*M*2;
27   }
28   printf("%.2f %.2f",height,total_height);
29   return 0;
30 }
原文地址:https://www.cnblogs.com/xiangxyq/p/7826455.html