1 条题解

  • 0
    @ 2026-10-26 13:21:31

    思路与算法

    从1开始逐个枚举人数n,同时检查n模2、3、4、5、6都余1,且n模7余0。第一个满足的数立即输出并停止。

    正确性说明

    每个条件直接对应一种排队方式的余人数。枚举覆盖全部更小的正人数,所以第一个满足全部条件的n就是最小解。独立验证可将前五条件合并为n=60k+1,再求模7为0,最小非负k=5,得到301。

    复杂度

    该固定问题最多检查301个人数,每次常数次取模,时间O(301)=O(1),空间O(1),变量初始化O(1)。

    易错点

    每行2至6人都剩1,不是人数本身能被它们整除。7人一排才是整除条件。零人不能满足余1;输出单个整数301。固定无输入域仅1点。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    int main() {
        for (int n = 1;; ++n)
            if (n % 2 == 1 && n % 3 == 1 && n % 4 == 1 && n % 5 == 1 && n % 6 == 1 && n % 7 == 0) {
                cout << n << "\n";
                break;
            }
    }
    
    • 1

    信息

    ID
    1747
    时间
    1000ms
    内存
    64MiB
    难度
    入门
    标签
    递交数
    1
    已通过
    1
    上传者