如何创建微信小程序下单,seo怎么学,制作一个网站能多少钱,广告网站建设1185 威佐夫游戏 V2 有2堆石子。A B两个人轮流拿#xff0c;A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子#xff0c;但不可不取。拿到最后1颗石子的人获胜。假设A B都非常聪明#xff0c;拿石子的过程中不会出现失误。给出2堆石子的数量#xff0c;问最后谁… 1185 威佐夫游戏 V2 有2堆石子。A B两个人轮流拿A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子但不可不取。拿到最后1颗石子的人获胜。假设A B都非常聪明拿石子的过程中不会出现失误。给出2堆石子的数量问最后谁能赢得比赛。 例如2堆石子分别为3颗和5颗。那么不论A怎样拿B都有对应的方法拿到最后1颗。 输入 第1行一个数T表示后面用作输入测试的数的数量。1 T 10000)
第2 - T 1行每行2个数分别是2堆石子的数量中间用空格分隔。(1 N 10^18) 输出 共T行如果A获胜输出A如果B获胜输出B。 输入样例 3
3 5
3 4
1 9 输出样例 B
A
A显然直接的做法是行不通的所以要加强精度 #include bits/stdc.h
using namespace std;
typedef long long LL;
LL tmp[3] {618033988,749894848,204586834};
LL MOD 1000000000;
int main()
{int T;LL m, n;cinT;while(T--){cinmn;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);elseputs(A);}return 0;
} 转载于:https://www.cnblogs.com/zllwxm123/p/9904212.html