Java 煤球数目计算

题目:

有一堆煤球,堆成三角棱锥形。具体:
第一层放1个,
第二层3个(排列成三角形),
第三层6个(排列成三角形),
第四层10个(排列成三角形),

如果一共有100层,共有多少个煤球?

题解:

分析
分析:
从堆放的规律来看,从上往下,每一层的总数等于 当前的层数 + 上一层的煤球总数
即 第一层等于 层数为1,上一层没有为0 第一层等于 1+0 = 1个
第二层 层数为2,上一层总数为1个 第二层总数 2+1 = 3个
第三层 层数为3, 上一层总数为3 所以总数为 3+3 = 6个
依次类推

    /**
     * 有一堆煤球,堆成三角棱锥形。具体:
     * 第一层放1个,
     * 第二层3个(排列成三角形),
     * 第三层6个(排列成三角形),
     * 第四层10个(排列成三角形),
     * ....
     *
     * 如果一共有100层,共有多少个煤球?
     * @param num 层数
     * @return 所有层的总数
     *
     * 分析:
     * 从堆放的规律来看,从上往下,每一层的总数等于 当前的层数 + 上一层的煤球总数
     * 即 第一层等于 层数为1,上一层没有为0 第一层等于 1+0 = 1个
     * 第二层 层数为2,上一层总数为1个 第二层总数 2+1 = 3个
     * 第三层 层数为3, 上一层总数为3  所以总数为 3+3 = 6个
     * 依次类推
     */
    private static long coalCycle(int num){
    
    
        if (num <= 0){
    
    
            return 0;
        }
        int[] sum = new int[num+1];
        // 从 1 开始便于计数
        // 第一层一定是一个
        sum[1] = 1;
        // 从第二层开始
        for (int i = 2; i <= num; i++) {
    
    
            // 当前层总数 等于上一层数量 + 当前层数
            sum[i] = sum[i - 1] + i;
        }
        // 累加每一层的数量
        long allSum = 1;
        for (int i = 2; i <= num; i++) {
    
    
            allSum += sum[i];
        }
        return allSum;
    }

猜你喜欢

转载自blog.csdn.net/weixin_44131922/article/details/131122928