zoukankan      html  css  js  c++  java
  • 1-2-K Game

    1-2-K Game

    首先让我们考虑没有k的情况:

    1. (n mod 3 =0)
      因为n可以被分解成若干个3相加,而每个3可以被分解为1+2或2+1,所以无论A出什么B都有方法应对
      B胜

    2. (n mod 3 =1)
      A可以先选择余数1,这样问题又回到了第一种情况,AB角色互换
      A胜

    3. (n mod 3 =2)
      与2同理,A先选2即胜
      而现在多出来的这个k也可以看成是3的某个自然数倍数加上一个小于3的数
      即k≡x(mod3)
      我们再来对x分类讨论:

    4. (x=0)此时的k就好像快速地切除1+2或2+1的回合,但对手总不会站着不动吧?我们知道B总是有方法使每一回合内(A+B)%3都等于1的
      列举一下(k用3代替):
      A:1 B:3
      A:2 B:2
      A:3 B:1
      是不是每回合在mod3意义下都是相同的?
      那么若干个回合后如果无法实现上述方法了
      即n%=k+1
      如果n=k A获胜
      否则情况又变回了无k的情况
      %3判断即可

    5. (x=1)此时k就好像有着能省略若干个回合功能的1,k就可有可无了,又回到了无k的情况

    6. (x=2)与2同理

    #include <bits/stdc++.h>
    
    using namespace std;
    int n,k;
    int main() {
        int _;
        scanf("%d", &_);
        while (_--) {
            scanf("%d%d", &n, &k);
            if (k % 3) {
                if (n % 3)
                    puts("Alice");
                else
                    puts("Bob");
            } else {
                n = n%(k + 1);
                if (n == k || n % 3)
                    puts("Alice");
                else
                    puts("Bob");
            }
        }
        return 0;
    }
    
  • 相关阅读:
    Qt 交换Layout中的QWidget控件位置
    霍夫变换(Hough)
    图像傅里叶变换
    通俗讲解:图像傅里叶变换
    傅里叶分析之掐死教程(完整版)
    一幅图弄清DFT与DTFT,DFS的关系
    Qt 实现简单的TCP通信
    Qt 基于TCP的Socket编程
    Socket原理讲解
    科研相机选择:sCMOS还是CCD?
  • 原文地址:https://www.cnblogs.com/Accpted/p/11386322.html
Copyright © 2011-2022 走看看