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

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

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

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

博弈论(巴什博奕,威佐夫博弈,尼姆博弈,斐波那契博弈)

一.  巴什博奕(Bash Game)   A和B一块报数,每人每次报最少1个,最多报4个,看谁先报到30。这应该是最古老的关于巴什博奕的游戏了吧。 其实如果知道原理,这游戏一点运气成分都没有,只和先...
  • AC_Gibson
  • AC_Gibson
  • 2014年11月30日 18:37
  • 5393

51nod 1185 威佐夫游戏 V2 (博弈+大数乘法模拟)

题目链接: 点击打开题目链接题解: 如果数据在10610^6左右,可以直接用(b−a)∗sqrt(5)+12(b-a)*\frac{sqrt(5)+1}{2}。但是这道题数据是101810^{18...
  • liangzhaoyang1
  • liangzhaoyang1
  • 2017年05月21日 10:13
  • 212

51nod oj 1072 威佐夫游戏 1185 威佐夫游戏 V2【威佐夫博奕】

题目链接:1072 1072 威佐夫游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 有2堆石子。A B两个人轮流拿,...
  • leibniz_zhang
  • leibniz_zhang
  • 2016年08月16日 15:28
  • 607

51nod 1185 威佐夫游戏 V2

1185 威佐夫游戏 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 有2堆石子。A B两个人轮流拿,A先拿。每次可以从一堆中...
  • BBHHTT
  • BBHHTT
  • 2017年11月27日 20:07
  • 37

1185 威佐夫游戏 V2 博弈论 + 大整数乘法

#include #include #include #define  ULL unsigned long long using namespace std; int main() { ULL ...
  • fanhansheng
  • fanhansheng
  • 2016年10月25日 08:50
  • 330

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

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

1185 威佐夫游戏v2,卡精度,乘法模拟

1185 威佐夫游戏 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 有2堆石子。A B两个人轮流拿,A先拿。每次可以从一堆中取...
  • qaz135135135
  • qaz135135135
  • 2016年08月11日 16:42
  • 303

模拟乘法-51nod1185 威佐夫游戏 V2

思路: 因为数字过大,那么1.618后面的诸多位小数也会对其产生影响,那么将1.618后面诸多小数提取出来,模拟乘法 模拟乘法: 普通的a*b 手动托出乘法运算,对应位数运算,最后只要拿出对于整...
  • qq_33951440
  • qq_33951440
  • 2016年09月23日 13:13
  • 218
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:51nod 1185 威佐夫游戏 V2(威佐夫博弈)
举报原因:
原因补充:

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