威佐夫博弈matlab,51nod1185 威佐夫游戏 V2 (模拟乘法)

基准时间限制: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

解题思路:

如果 这个题目中数据范围不是很大的话 直接乘以 (sqrt(5)+1)/2 就行了,但是这个题目中,数据范围太大,直接乘的话会有精度问题,所以我们就减少精度问题,就将 0.618033988749894848204586834...0.618033988749894848204586834... 拆成整数放进数组里,然后通过乘法来减少精度的损失。

#include

#include

#define ll long long

using namespace std;

ll inf=1000000000;

ll a[3]={618033988,749894848,204586834};//模拟百、十、个位

int main()

{

ll x,y,t;

scanf("%lld",&t);

while(t--)

{

scanf("%lld%lld",&x,&y);

if(x

ll dis=x-y;

ll t0=dis/inf;//模拟十位

ll t1=dis%inf;//模拟个位

ll sum=t1*a[2];//个位

sum=t0*a[2]+t1*a[1]+sum/inf;//十位

sum=t0*a[1]+t1*a[0]+sum/inf;//百位

sum=dis+t0*a[0]+sum/inf;//dis+后面小数进位产生的结果

if(sum==y)

printf("B\n");

else

printf("A\n");

}

return 0;

}

51nod--1185 威佐夫游戏 V2 (博弈, 乘法模拟)

题目: 1185 威佐夫游戏 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 有2堆石子.A B两个人轮流拿,A先拿.每次可以从一堆中取任意个或从2堆中 ...

51nod1185 威佐夫游戏 V2【博弈论】

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

51NOD 1185 威佐夫游戏 V2&lpar;威佐夫博弈&rpar;

1185 威佐夫游戏 V2  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 有2堆石子.A B两个人轮流拿,A先拿.每次可以从一堆中取任意个或从2堆中取 ...

51Nod 1185 威佐夫游戏 V2

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

(博弈论 高精度小数)51NOD 1185 威佐夫游戏 V2

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

51nod--1072 威佐夫游戏 (博弈论)

题目: 1072 威佐夫游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 有2堆石子.A B两个人轮流拿,A先拿.每次可以从一堆中取任意个或从2堆中取相同 ...

51Nod 1072:威佐夫游戏 (威佐夫博奕)

1072 威佐夫游戏  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 有2堆石子.A B两个人轮流拿,A先拿.每次可以从一堆中取任意个或从2堆中取相同数 ...

51Nod 1072 威佐夫游戏

题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1072 有2堆石子.A B两个人轮流拿,A先拿.每次可以从一堆 ...

(博弈论)51NOD 1072 威佐夫游戏

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

随机推荐

&lbrack;转载&rsqb; ffmpeg超详细综合教程——摄像头直播

本文的示例将实现:读取PC摄像头视频数据并以RTMP协议发送为直播流.示例包含了 1.ffmpeg的libavdevice的使用 2.视频解码.编码.推流的基本流程 具有较强的综合性. 要使用liba ...

android代码片段一

1.Android判断是Pad或者手机 public boolean isTabletDevice() { TelephonyManager telephony = (TelephonyManager ...

Windows8&period;1和Ubuntu14&period;04双系统卸载Ubuntu參考教程&lbrack;图&rsqb;

我之前编写并公布了这篇教程,而本文提供的卸载Ubuntu方法适用于这篇教程,其它方法安装的Ubuntu可适当 ...

虚拟机克隆,并设置新的ip

6.1克隆新的虚拟机 选中某个虚拟机-à右键à管理à克隆 选择下一步 选择下一步 点击完成 6.2修改主机名 [root@hadoop3 ~]# vim/etc/sysconfig/network 将 ...

win10配置java开发环境

安装java(JDK) Oracle官网下载地址 选择JavaSE > Downloads 选择最新版本 > Download Accept License Agreement 选择要下载 ...

Android AsyncTask将讲解

原型:AsyncTask Params 表示传入参数类型 Progress表示处理参数类型 Result表示返回类型 new Async ...

Java读取文件-BufferedReader&sol;FileReader&sol;InputStreamReader&sol;FileInputStream的关系和区别

一.Java读取和存储文件数据流 Java读取文件,实际是将文件中的字节流转换成字符流输出到屏幕的过程   这里面涉及到两个类:InputStreamReader和OutputStreamWriter ...

day2-pycharm创建项目,driver下载和浏览器设置

对于ie需要设置,才能使用ie做测试 火狐的使用不能超过43版本,ie11现在有多次弹出alert无法识别其内容的问题 https://github.com/SeleniumHQ/selenium/w ...

&lbrack;Linux&rsqb;如何查看系统的Time Slice

Linux Time Slice 首先,.config中查看kernel configure中CONFIG_HZ值,比如100 然后,查看include/linux/sched/rt.h或者inclu ...

Knight Tournament 合并区间

Hooray! Berl II, the king of Berland is making a knight tournament. The king has already sent the me ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值