• 1066 Bash游戏


    基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
     
    有一堆石子共有N个。A B两个人轮流拿,A先拿。每次最少拿1颗,最多拿K颗,拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出N和K,问最后谁能赢得比赛。
    例如N = 3,K = 2。无论A如何拿,B都可以拿到最后1颗石子。
    Input
    第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 10000)
    第2 - T + 1行:每行2个数N,K。中间用空格分隔。(1 <= N,K <= 10^9)
    Output
    共T行,如果A获胜输出A,如果B获胜输出B。
    Input示例
    4
    3 2
    4 2
    7 3
    8 3
    Output示例
    B
    A
    A
    B


    博弈论,确实有趣,

    Bash Game:一堆n个物品,两人轮流取,每次取1至m个,最后取完者胜

              比如10个物品,每次只能取1到5个,则先手方必赢

            1.面对[1...m]个局面,必胜
            2.面对m+1个局面,必输
            3.如果可以使对手面临必输局面,那么是必赢局面
            4.如果不能使对手面临必输局面,那么是必输局面


    基础:1      ,      2, ...,        m是必赢局面,   m+1是必输局面
    递推:m+2,m+3, ... ,2m+1是必赢局面,2m+2是必输局面 
                 ...

                k(m+1)是必输局面,应该允许k=0,因为0显然也是必输局面    

    在必输局和必赢局中,赢的一方的策略是: 拿掉部分物品,使对方面临k(m+1)的局面

     1 #include <iostream>
     2 using namespace std;
     3 
     4 int main(){
     5     int n;
     6     cin>>n;
     7     while(n--){
     8         int x,y;
     9         cin>>x>>y;
    10         if(x%(y+1)==0){
    11             cout<<"B"<<endl;
    12         }else{
    13             cout<<"A"<<endl;
    14         }
    15     }
    16     return 0;
    17 }
  • 相关阅读:
    Python: 通过 pip 安装第三方包后依然不能 import
    jar命令
    vim中删除^M
    Linux 非互联网环境安装依赖包
    安装rpm包时提示错误:依赖检测失败的解决方法
    python3.5安装
    yum配置安装 及报错
    统计数组元素出现的次数
    插入法排序
    选择法排序
  • 原文地址:https://www.cnblogs.com/zllwxm123/p/9009396.html
Copyright © 2020-2023  润新知