51nod 1185 威佐夫游戏 V2(威佐夫博弈)

原创 2016年08月30日 20:58:21

基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
 收藏
 关注
有2堆石子。A B两个人轮流拿,A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取。拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出2堆石子的数量,问最后谁能赢得比赛。
例如:2堆石子分别为3颗和5颗。那么不论A怎样拿,B都有对应的方法拿到最后1颗。
Input
第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 10000)
第2 - T + 1行:每行2个数分别是2堆石子的数量,中间用空格分隔。(1 <= N <= 10^18)
Output
共T行,如果A获胜输出A,如果B获胜输出B。
Input示例
3
3 5
3 4
1 9
Output示例
B
A
A

一道威佐夫博弈的模板题,这里我要科普一下啊,博弈论一般分三大博弈论和SG函数,三大博弈论分别是威佐夫博弈,Nim博弈和布什博弈,这里我有三个博弈的算法分析,来,我们来日常膜菊苣吧!

三大博弈论学习链接~:http://blog.csdn.net/theprinceofelf/article/details/7225206

然后上代码吧!

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
using namespace std;
typedef long long LL;
LL tmp[3] = {618033988,749894848,204586834};
LL MOD = 1000000000;
int main()
{
    int T;
    LL m, n;
    cin>>T;
    while(T--)
    {
        cin>>m>>n;
        if(m < n)
            swap(n, m);
        LL cha = m - n;
        LL ta = cha/MOD, tb = cha%MOD;
        LL tp = tb*tmp[2];
        tp = ta*tmp[2] + tb*tmp[1] + tp/MOD;
        tp = ta*tmp[1] + tb*tmp[0] + tp/MOD;
        tp = cha + ta*tmp[0] + tp/MOD;
        if(tp == n)
            puts("B");
        else
            puts("A");
    }
    return 0;
}





相关文章推荐

51NOD 1185 威佐夫游戏 V2(博弈论 + 减少精度)

传送门 有2堆石子。A B两个人轮流拿,A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取。拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出2堆石...

51Nod-1185-威佐夫游戏 V2

ACM模版描述有2堆石子。A B两个人轮流拿,A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取。拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出2...
  • f_zyj
  • f_zyj
  • 2016年07月27日 00:04
  • 702

51Nod-1265-四点共面

ACM模版描述给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面)。如果共面,输出”Yes”,否则输出”No”。Input 第1行:一个数T,表示输入的...
  • f_zyj
  • f_zyj
  • 2016年07月29日 03:28
  • 547

玲珑学院OJ 1149-Buildings-(RMQ+二分)

题目链接:http://www.ifrog.cc/acm/problem/1149 大致题意:给你n个数,问你这n个数中有多少个子区间的最大值减最小值小于等于k 题目思路:首先预处理一波区间最大最...

[51Nod 1185 威佐夫游戏 V2]Wythoff Game+乘法模拟

[51Nod 1185 威佐夫游戏 V2]Wythoff Game+乘法模拟题目链接:[51Nod 1185 威佐夫游戏 V2] 题意描述:有2堆石子。A B两个人轮流拿,A先拿。每次可以从一堆中取...

51NOD 1185 威佐夫游戏 V2(大数运算 JAVA 模板)

传送门::  点我 点我   http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1185 1185 ...
  • sizaif
  • sizaif
  • 2017年05月04日 11:34
  • 161

hdu 2177 取(2堆)石子游戏 (威佐夫博弈求取后状态+二分)

取(2堆)石子游戏Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...

HDOJ 取石子游戏(威佐夫博弈)

取石子游戏 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm...

POJ-1067 取石子游戏(威佐夫博弈)

直接是:威佐夫博弈。 这个过于繁琐,只能运用现成的结论。 设奇异局势(必败局势)为(a[i],b[i]),则有a[0]=b[0]=0;a[k]=前面未出现的最小自然数,b[k]=a[k]+k 具...

百练_1067取石子游戏(威佐夫博弈)

1067:取石子游戏 描述:         有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:51nod 1185 威佐夫游戏 V2(威佐夫博弈)
举报原因:
原因补充:

(最多只允许输入30个字)