列表

详情


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

描述

一球从 h 米高度自由落下,每次落地后反跳回原高度的一半再落下,求它在第 n 次落地时共经过了多少米?第 n 次返弹多高?

输入描述

输入小球下落的高度和落地的次数(先输入小球初始高度再输入反弹次数)

输出描述

输出小球第 n 次 落地时经过的距离和第 n 次反弹的高度(保留小数点后1位)

示例1

输入:

100 1

输出:

100.0 50.0

示例2

输入:

100 3

输出:

250.0 12.5

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 2ms, 内存消耗: 384KB, 提交时间: 2021-11-28

#include <iostream>
#include <iomanip>
using namespace std;

int main() {

    // 下落的高度和落地的次数
    double h;
    int n;
    double mater=0;
    cin >> h;
    cin >> n;
   
    for(int i=0;i<n;i++){
       
        mater+=h;
       if(i>0 ) mater+=h;
        h/=2.0;
    }   
    cout<<fixed<<setprecision(1)<<mater<<" "<<h<<endl;
   
    

    return 0;
}

C++ 解法, 执行用时: 2ms, 内存消耗: 392KB, 提交时间: 2022-03-11

#include <iostream>
#include <iomanip>
using namespace std;

int main() {

    // 下落的高度和落地的次数
    double h;
    int n;
    double s;
    cin >> h;
    cin >> n;
    s = h*1.0;
    h = h * 0.50;
    if (n == 1) ;
    // write your code here.....
    else {
        for (int i = 2; i <= n; i++) {
            s = s + 2.0* h;
            h = h * 0.50;
        }
    }

    cout <<fixed<<setprecision(1) <<s << ' '<<setprecision(1) << h;
    return 0;
}

C++ 解法, 执行用时: 2ms, 内存消耗: 392KB, 提交时间: 2021-12-07

#include <iostream>
#include <iomanip>
using namespace std;

int main() {

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

    cin >> h;
    cin >> n;

    
    double sum = 0;
    for (int i = 0; i < n; i++) {
        sum += h;
        if (i > 0) sum += h;
        h /= 2.0;
    }
    cout << fixed << setprecision(1) << sum << " " << setprecision(1) << h << endl;
    return 0;
}

C++ 解法, 执行用时: 2ms, 内存消耗: 396KB, 提交时间: 2022-01-22

#include <iostream>
#include <iomanip>
using namespace std;

int main() {

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

    cin >> h;
    cin >> n;

    // write your code here......
    double sum=0;
    for(int i=0;i<n;i++){
        sum+=h;
        if(i>0) {sum+=h;}
        h/=2.0;
    }
    cout<<fixed<<setprecision(1)<<sum<<" "<<setprecision(1)<<h<<endl;
    return 0;
}

C++ 解法, 执行用时: 2ms, 内存消耗: 396KB, 提交时间: 2021-12-18

#include <iostream>
#include <iomanip>
using namespace std;

int main() {

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

    cin >> h;
    cin >> n;

    // write your code here......
    double m=0.0,sum=h;
    for(int i=1;i<n;i++)
    {
        
        sum+=h/2.0*2.0;
        h=h/2.0;
        m=h/2.0;
    }
    cout<<fixed<<setprecision(1)<<sum<<" "<<m;
   

    return 0;
}

上一题