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

版权声明:转载请声明原文链接地址,谢谢! 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结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42859280/article/details/84948309