列表

详情


JD5. 小球的距离

描述

小东和三个朋友一起在楼上抛小球,他们站在楼房的不同层,假设小东站的楼层距离地面N米,球从他手里自由落下,每次落地后反跳回上次下落高度的一半,并以此类推直到全部落到地面不跳,求4个小球一共经过了多少米?(数字都为整数)

给定四个整数A,B,C,D,请返回所求结果。

测试样例:
100,90,80,70
返回:1020

原站题解

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

C++ 解法, 执行用时: 2ms, 内存消耗: 360KB, 提交时间: 2020-11-01

class Balls {
public:
    double cal(double A){
       double dist_sum = A;
       double dist_bounced = A;
       while(dist_bounced >= 0.00001){
           dist_bounced = dist_bounced / 2.0;
           dist_sum = dist_sum + 2.0 * dist_bounced;
       }
       
        return dist_sum;
    }
        
    int calcDistance(int A, int B, int C, int D) {
        // write code here
        return ceil(cal(A) + cal(B) + cal(C) + cal(D));
    }
};

C++ 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2020-08-16

class Balls {
public:
    int calcDistance(int A, int B, int C, int D) {
        return 3*(A+B+C+D);
    }
};

C++ 解法, 执行用时: 2ms, 内存消耗: 408KB, 提交时间: 2021-08-02

class Balls {
public:
    int calcDistance(int A, int B, int C, int D) {
        // write code here
        return ceil(calculate(A)+calculate(B)+calculate(C)+calculate(D));
    }
    double calculate(double num){
        double ans=num;
        while(num>0){
            ans+=num;
            num/=2;
        }
        return ans;
    }
};

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

class Balls {
public:
    int calcDistance(int A, int B, int C, int D) {
        double sum = A + B + C + D;
        double res = sum;
        while(sum > 0){
            res += sum;
            sum /= 2.0;
        }
        return ceil(res);
    }
};

C++ 解法, 执行用时: 2ms, 内存消耗: 420KB, 提交时间: 2021-10-09

class Balls {
public:
    int calcDistance(int A, int B, int C, int D) {
        // write code here
        return cal(A)+cal(B)+cal(C)+cal(D);
    }
    int cal(int x) {
        return fsum(x) * 2 - x;
    }
    int fsum(int x) {
        return 2 * x;
    } // 神tm数组都为整数,只是结果为整数,中间的高度并不是整数的啊……
//     int fsum(int x) {
//         int res = 0;
//         while (x) {
//             res += x;
//             x >>= 1;
//         }
//         return res;
//     }
};

上一题