解题思路:

注意事项:

参考代码:

#include<iostream>

#include <iomanip> 

using namespace std;

int main()

{

int N;

double M,a=0,sum=0;

cin >> M >> N;

for (int i = 1; i <= N; i++)

{

sum += M+a;   //第一次下落为M,以后每次落地经过的距离加当前高度的两倍,所以再加一次a;

a = M / 2;   //每次落地反弹的高度

M = a;   //重新计算当前的高度

}

cout << setiosflags(ios::fixed) << setprecision(2);   //保留两位小数

cout <<M<<" "<< sum << endl;

return 0;

}


点赞(0)
 

0.0分

8 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 2 条评论

一个诱饵 1年前 回复TA
@(*•̀ᴗ•́*)و ̑̑ s=s-2*M+1000 ;1000要改为M,你可以输入“1 1”试试
(*•̀ᴗ•́*)و ̑̑ 3年前 回复TA
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    int N ;
    float M , s=0;
    cin>>M>>N ;
    for(int i=1 ; i<=N ; i++)
    {
        M=M/2 ;
        s+=2*M ;
    }
    s=s-2*M+1000 ;
    cout<<fixed<<setprecision(2)<<M<<' '<<s<<endl ;
    return 0;
}
想问一下我这哪里错了