1 条题解

  • 0
    @ 2025-8-24 21:55:37

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 翟绪尧
    这家伙不太懒,但也不想留下什么

    搬运于2025-08-24 21:55:37,当前版本为作者最后更新于2017-12-25 10:55:05,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    正解:只有是6的倍数就是第二个人赢,否则第一个人赢

    解释:

    一。首先,1,2,3,4,5都可以一次取到,当n=6时,第一个人先取1-5个,无论怎么取,第二个人全去走就赢了。

    二。对于6的倍数,一定不能是质数的K次方,证明:先是除2以外的质数都是奇数,而奇数乘奇数都是奇数,故6的倍数全不是n的K次方;对于2,由于6中存在因数3,故6*n也不是2的K次方。

    三。对于12,第一个人取1-5个,第二个人直接取到剩下6个,就变成了情况一,第一个人取不到6个,若去6个以上,则直接败;

    四。归纳6*n。第一个人无法去6的倍数个,第二个人只要将数压倒6*m(m<n)就会慢慢推到情况二,就又是第一个人输。

    五。对于非6的倍数,第一个人只要去1-5个,使之变成6的倍数,就变成情况四了。

    综上:正解成立。

    良心AC代码,勿复制

    #include<iostream>
    using namespace std;
    int main()
    {
        int n,a;
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>a;
            if(a%6==0)cout<<"Roy wins!"<<endl;
            else cout<<"October wins!"<<endl;
        }
    }
    
    • 1

    信息

    ID
    2933
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    递交数
    0
    已通过
    0
    上传者