牛牛和牛可乐的赌约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)
这个时候,牛牛为了弥补上一局的不公平,决定要自己先手,如果两个人都用最优的策略,最后牛牛是否能获胜。
题目中描述:牛牛和牛可乐轮流移动这个棋子,这个棋子可以左移也可以上移,可以移动一格或者两格。
没有明确说明移动两格究竟能不能改变方向。
①、如果能改变方向,那么移动可能是左、上或者上、左或者左、左或者上、上,四种方式。
牛牛失败的判断条件:(x+y)%3 == 0
②如果不能改变方向,那么移动左、左或者上、上,两种方式。
牛牛失败的判断条件:abs(x-y)%3 == 0 || x == y
若分不清题意很可能导致与答案失之交臂。
按照AC代码来说,题目描述的是第②种情况。
#include<stdio.h>
#include<math.h>
#define ll long long
int main(){
int t;
scanf("%d", &t);
while(t--){
ll x, y;
scanf("%lld%lld", &x, &y);
if(x==y || abs(x-y)%3==0)
printf("awsl\n");
else
printf("yyds\n");
}
return 0;
}