解题思路

这是一个等比数列求和问题。关键点:

  1. 单个小球的路径

    • 下落:
    • 反弹:
    • 下落:
    • 反弹:
    • 下落:
    • ...直到不再反弹
  2. 等比数列求和

    • 第一次下落:
    • 后续每次上下:
    • 总路程 =
  3. 四个小球

    • 每个小球的路程都是初始高度的3倍
    • 总路程 =

代码

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

public class Balls {
    public int calcDistance(int A, int B, int C, int D) {
        // write code here
        return 3 * (A + B + C + D);
    }
}
# -*- coding:utf-8 -*-

class Balls:
    def calcDistance(self, A, B, C, D):
        return 3 * (A + B + C + D)

算法及复杂度

  • 算法:数学公式
  • 时间复杂度:,直接计算
  • 空间复杂度:,只使用常数额外空间