1 条题解

  • 0
    @ 2025-4-7 21:41:57

    C :

    #include <stdio.h>
    int main(){
        int n;
        scanf("%d", &n);
        while(n--){
            int N, M;
            scanf("%d %d", &N, &M);
            printf("%s\n", N%(M+1) ? "Win" : "Lose");
        }
        return 0;
    }
    

    C++ :

    /*
    巴什博奕(Bash Game):
        只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。
    最后取光者得胜。
        显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,
    后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果
    n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走
    k(≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的
    取法,那么先取者肯定获胜。总之,要保持给对手留下(m+1)的倍数,就能最后获胜。
    这个游戏还可以有一种变相的玩法:两个人轮流报数,每次至少报一个,最多报十
    个,谁能报到100者胜。
    */
    #include <iostream>
    #include <cstdio>
    
    using namespace std;
    
    int main()
    {
        int n, m, T;
        scanf("%d", &T);
        while(T--)
        {
            scanf("%d%d", &n, &m);
            if(n % (m + 1))
                printf("Win\n");
            else
                printf("Lose\n");
        }
        return 0;
    }
    
    • 1

    信息

    ID
    2113
    时间
    3000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者