top1编程
← 返回题目
题解

捡鹅卵石

1 条题解

  • 0
    @ 2026-8-4 2:01:46

    解题思路

    童童想凑够 20 斤石头,每次捡 4 块。现在已经有 3 块,已知它们的重量,问第 4 块要多少斤才能凑够 20 斤。

    思路很简单:把 4 块石头的总重量想成一个整体。

    • 已知 3 块石头分别重 a、b、c 斤。
    • 这 3 块一共 a + b + c 斤。
    • 第 4 块要补上的重量 = 20 - (a + b + c)。

    比如输入 3 5 7:3 块共 3 + 5 + 7 = 15 斤,第 4 块要 20 - 15 = 5 斤,正好符合样例。

    为什么这么做是对的?因为"4 块石头总重量 = 20 斤"这个条件可以写成: 第 1 块 + 第 2 块 + 第 3 块 + 第 4 块 = 20 移项就得到:第 4 块 = 20 - (第 1 块 + 第 2 块 + 第 3 块)。

    题目保证 3 块石头的总重量在 3 到 19 斤之间,所以第 4 块一定是一个 1 到 17 的正整数,不用担心算出负数或者 0。

    这道题用的是"总数 - 已知部分 = 未知部分"的思考方式,以后遇到"凑总数"的题目都可以这么想:先把已经知道的部分加起来,再用总数去减。

    参考代码

    #include <iostream>
    using namespace std;
    
    int main() {
        int a, b, c;   // 已经称过的 3 块石头的重量
        cin >> a >> b >> c;
    
        int total = a + b + c;   // 3 块石头一共多少斤
        int fourth = 20 - total; // 凑够 20 斤,第 4 块石头要多少斤
    
        cout << fourth << endl;  // 输出第 4 块石头的重量
        return 0;
    }
    

    复杂度分析

    只读入 3 个数,做两次加法和一次减法,运算次数固定,和石头重量的大小无关。时间复杂度和空间复杂度都是 O(1)。

    • 1