1 solutions

  • 1
    @ 2022-5-22 19:15:35
    经典的取石子游戏(巴什博弈),题面基本上都是废话,总结一下就是一共n张卡,a,b两人轮流抽,每人每次最多抽k张,a先抽,问谁抽到最后一张。

    如果我们把两人各抽一次作为一轮,那么我们不难发现这一轮一共抽了多少张卡是由后抽卡的人决定的。比如一共8张卡,每次最多抽3张,那么a无论是抽1张、2张还是三张,b都可以把这一轮抽的总张数控制为4张。按照这样抽卡的话,一共8张卡,两轮后刚好抽完,那么b就一定抽到最后一张也就是说,当总张数n能够被(k+1)整除时,b抽到最后一张,反之a抽到最后一张。
     
     
    代码如下:
    #include<iostream>
    #include<algorithm>
    using namespace std;
    

    int main(){ int t; int a[1000]; int k,n; scanf("%d",&t); for(int i=0;i<t;i++){ scanf("%d %d",&k,&n); if(n%(k+1)) printf("I'll all twice.\n"); else printf("I'll all once.\n"); } return 0; }
    </p>

     

    • 1

    Information

    ID
    6508
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    8
    Tags
    # Submissions
    120
    Accepted
    16
    Uploaded By