牛客小白月赛28 B.牛牛和牛可乐的赌约2

牛客小白月赛28 B.牛牛和牛可乐的赌约2

题目链接

题目描述

牛牛感觉在上一次赌约中,情况对于自己非常不利,所以决定再赌一场。
这时候,牛蜓队长出现了:第一,绝对不意气用事;第二,绝对不漏判任何一件坏事;第三,绝对裁判的公正漂亮。
牛蜓队长带他们来到了一个棋盘游戏,棋盘左上角是(0,0)(0,0),这个棋盘在(x,y)(x,y)的位置有一个棋子,牛牛和牛可乐轮流移动这个棋子,这个棋子可以左移也可以上移,可以移动一格或者两格,直到不能再移动(即到(0,0)(0,0))的那个人算输。
如果原本在(x,y)(x,y),左移一格即为(x,y -1)(x,y−1),上移一格即为(x-1,y)(x−1,y)
这个时候,牛牛为了弥补上一局的不公平,决定要自己先手,如果两个人都用最优的策略,最后牛牛是否能获胜。

输入描述:

有多组输入样例,第一行为样例组数 t ( t ≤ 1 × 1 0 6 ) t(t\leq 1×10^6) tt1×106
接下来 t t t行 每行有一个整数 x x x y y y,分别表示初始位置 ( x , y ≤ 1 × 1 0 9 ) (x,y\leq 1×10^9) x,y1×109

输出描述:

输出t行,如果牛牛获胜,就输出”yyds”(不带引号)

否则输出”awsl”

示例1

输入

2
0 0
0 2

输出

awsl
yyds

简单博弈~
如果放到一维,我们不难发现只要距离是 3 的倍数就必输,其余情况必赢;二维其实只要对横纵坐标分别求一个状态抑或即可,AC代码如下:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int t,n,x,y;
int main(){
    
    
    cin>>t;
    while(t--){
    
    
        cin>>x>>y;
        x%=3,y%=3;
        if(!(x^y)) printf("awsl\n");
        else printf("yyds\n");
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_43765333/article/details/108714119
今日推荐