1 solutions
-
0
解题思路
这道题的核心是找出所有满足条件的分组方式。
设:
- n 为总人数
- d 为每组的人数
- k 为组数
则满足关系:n = d × k
约束条件:
- 小组个数至少2个:k ≥ 2,即 n/d ≥ 2,d ≤ n/2
- 每组人数不少于5人:d ≥ 5
因此,我们需要找出 n 的所有约数 d,满足:5 ≤ d ≤ n/2
算法:
- 遍历从 5 到 n/2 的所有整数 i
- 如果 n 能被 i 整除,则 i 是一种合法的每组人数
- 计数所有合法的 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; }代码解释
- 读取总人数 n
- 循环检查 5 到 n/2 的每个数 i
- 如果 n 能被 i 整除,说明可以分成 n/i 组,满足条件,计数加一
- 输出计数结果
复杂度分析
- 时间复杂度:O(n)
- 空间复杂度:O(1)
由于 n < 1000,这种暴力方法完全足够。
Information
- ID
- 500
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 9
- Tags
- # Submissions
- 13
- Accepted
- 5
- Uploaded By