51nod 1185 威佐夫游戏V2

原创 2016年08月31日 16:43:25
有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
分析:高精度+黄金分割定律,N到2<<64,用double表示黄金分割率会出现精度问题,所以要将其分割成三部分每部分9位。
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MOD=1e9;
int Gold[3]={618033988,749894848,204586834};
int main(){
	int T;scanf("%d",&T);
	while(T--){
		LL a,b,temp;
		scanf("%lld%lld",&a,&b);
		if(a<b)	swap(a,b);
		LL dist=a-b,ta=dist/MOD,tb=dist%MOD;
		temp=Gold[2]*tb;
		temp=ta*Gold[2]+tb*Gold[1]+temp/MOD;
		temp=ta*Gold[1]+tb*Gold[0]+temp/MOD;
		temp=dist+ta*Gold[0]+temp/MOD;
		if(temp==b)	printf("B\n");
		else printf("A\n");
	}
	return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

51 NOD _ 1185 威佐夫游戏 V2

题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1185 1185 威佐夫游戏 V2 ...

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

传送门::  点我 点我   http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1185 1185 ...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

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

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

51nod 1072 博弈 威佐夫游戏

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

博弈论的三个小游戏: Bash游戏 威佐夫游戏 Nim游戏

Bash游戏 威佐夫 Nim游戏 Bash游戏https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1066游戏规则:有一堆石子...

威佐夫博弈

威佐夫博弈: 有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不 限,最后取光者得胜。 例题:HDU 1527:取石子游戏 http://acm.h...

威佐夫博弈

摘自:点击打开链接 威佐夫博奕(Wythoff Game) 定义:有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。...

51Nod 1067 Bash游戏 V2

1067 Bash游戏 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 有一堆石子共有N个。A B两个人轮流拿,A先拿。每次只能拿1,3,...

威佐夫博弈

所谓威佐夫博弈,是ACM题中常见的组合游戏中的一种,大致上是这样的:     问题:               ...

威佐夫博弈

威佐夫博奕 如有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。 我们用(ak,bk)(ak ≤ bk ...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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