top1编程
← 返回题目
题解

【入门】四个人的年龄求解

1 条题解

  • 0
    @ 2026-7-31 11:38:47

    解题思路

    四个人的年龄组成一个等差数列,年龄相加是 26,相乘是 880。要求找出这四个人可能的年龄。

    设首项为 a,公差为 d,那么四个年龄就是:

    a,a+d,a+2d,a+3d

    要满足两个条件:

    1. 和:a + (a+d) + (a+2d) + (a+3d) = 26
    2. 积: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