版权声明:转载请声明原文链接地址,谢谢! https://blog.csdn.net/weixin_42859280/article/details/84948309
题目描述
一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。
它在第N次落地时反弹多高?共经过多少米? 保留两位小数
输入
M N
输出
它在第N次落地时反弹多高?共经过多少米? 保留两位小数,空格隔开,放在一行
样例输入
1000 5
样例输出
31.25 2875.00
来源/分类
C语言
题目截图:
思路:
首先想到用for循环语句来解决!
下落一次比较长,要加上!
s+=a;
然后长度缩减一半!
a=a/2;
再加上缩减之后的一半!
s+=a;
但是整个程序计算的是它从被抛出点,到落地的距离!
我们要计算的是,他悬空终止的总距离!
再减去最后一次反弹起来的距离!
s-=a;
代码:
#include<iostream>
using namespace std;
int main()
{
double a,b,s;
s=0;
cin>>a>>b;
//printf("a %.2f\n",a);
//printf("b %.2f\n",b);
//printf("s %.2f\n\n\n",s);
for(int i=0;i<b;i++)
{
s+=a;
a=a/2;
s+=a;
//printf("a %.2f\n",a);
//printf("s %.2f\n",s);
}
s-=a;
printf("%.2f %.2f",a,s);
}
代码截图:
代码执行截图:
OJ结果: