题解 | #计算小球走过的路程和反弹高度#

计算小球走过的路程和反弹高度

http://www.nowcoder.com/practice/ac674f68367149d5ad1f857a379e69c9

#include <iostream>
#include <iomanip>
#include<math.h>
using namespace std;

int main() {

    // 下落的高度和落地的次数
    double h;
    int n;

    cin >> h;
    cin >> n;

    // write your code here......
    double all_h=0;
    double hh=0;
    double  dd=0;
    int i=1;
    for(;i<n;i++)//循环小球落地次数
    {
        
        dd=h*(pow(0.5,i))*2;  //计算前次落地弹起的距离和当前这次落地距离之和,当作第二次往后单次落地的距离
        hh=h*(pow(0.5,i))*0.5; //计算小球落地后弹起的距离
        all_h+=dd;//累计每次落地距离,(除第一次以外)
    }
    if(i==1) //第一次落地,一共经过初始高度距离,也就是第一次传入距离,第二次往后计算落地需要经过的距离旧需要多计算一次小球弹起的距离
        hh=h*(pow(0.5,1));
    all_h+=h; //最后加上第一次落地的距离,可以计算出n次落地总共经历的距离
    cout<<fixed<<setprecision(1)<<all_h<<" "<<hh<<endl;
    return 0;
}

全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务