1 solutions

  • 0
    @ 2026-4-17 16:00:46

    解题思路

    这道题的核心是找出所有满足条件的分组方式。

    设:

    • n 为总人数
    • d 为每组的人数
    • k 为组数

    则满足关系:n = d × k

    约束条件

    1. 小组个数至少2个:k ≥ 2,即 n/d ≥ 2,d ≤ n/2
    2. 每组人数不少于5人:d ≥ 5

    因此,我们需要找出 n 的所有约数 d,满足:5 ≤ d ≤ n/2

    算法

    1. 遍历从 5 到 n/2 的所有整数 i
    2. 如果 n 能被 i 整除,则 i 是一种合法的每组人数
    3. 计数所有合法的 i 的个数

    参考代码

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
        
        int count = 0;
        for (int i = 5; i <= n / 2; i++) {
            if (n % i == 0) {
                count++;
            }
        }
        
        cout << count << endl;
        return 0;
    }
    

    代码解释

    1. 读取总人数 n
    2. 循环检查 5 到 n/2 的每个数 i
    3. 如果 n 能被 i 整除,说明可以分成 n/i 组,满足条件,计数加一
    4. 输出计数结果

    复杂度分析

    • 时间复杂度:O(n)
    • 空间复杂度:O(1)

    由于 n < 1000,这种暴力方法完全足够。

    Information

    ID
    500
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    9
    Tags
    # Submissions
    13
    Accepted
    5
    Uploaded By