题解
捡鹅卵石
1 条题解
-
0
解题思路
童童想凑够 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