题解
【入门】四个人的年龄求解
1 条题解
-
0
解题思路
四个人的年龄组成一个等差数列,年龄相加是 26,相乘是 880。要求找出这四个人可能的年龄。
设首项为 a,公差为 d,那么四个年龄就是:
a,a+d,a+2d,a+3d
要满足两个条件:
- 和:a + (a+d) + (a+2d) + (a+3d) = 26
- 积:a × (a+d) × (a+2d) × (a+3d) = 880
思路:穷举。
年龄范围是 1~130,所以枚举首项 a 从 1 到 130,公差 d 从 0 到 130,对每一组都算四个年龄的和与积,同时满足 26 和 880 就输出。
验证一下:
- a=2,d=3:年龄是 2、5、8、11
- 和 = 2+5+8+11 = 26 ✅
- 积 = 2×5×8×11 = 880 ✅
所以这四个人的年龄是 2、5、8、11。
参考代码
#include <iostream> using namespace std; int main() { for (int a = 1; a <= 130; a++) { for (int d = 0; d <= 130; d++) { int x = a; int y = a + d; int z = a + 2 * d; int w = a + 3 * d; if (x + y + z + w == 26 && x * y * z * w == 880) { cout << x << " " << y << " " << z << " " << w << endl; } } } return 0; }复杂度分析
- 时间复杂度:O(N²),枚举首项和公差
- 空间复杂度:O(1)
- 1