解法一:
bash博弈变体:
双方博弈的时候都尽量不会让对方到达必胜状态
所以对于第一堆,你取 x ,他就会取 c-x+1 保证总和为 c+1 ,为一个偶状态(取了两次)
所以最后就剩下 a%( c+1 ) 和 b%(d+1) ,若两者相等就输了,不等就赢了
例如:
剩下(2 , 2) 你取 1 ,他也取 1 ,或者你取 2 ,他也取 2 ,反正你就是赢不了
剩下(2 , 3) 你可以取石子转化为(2 , 2),导致对方是必败的状态
#include<stdio.h>
int main()
{
int a,b,c,d;
while(scanf("%d%d%d%d",&a,&b,&c,&d)!=EOF)
puts(((a%(c+1))==(b%(d+1)))?"NO!":"NUO!");
return 0;
}
解法二:
SG函数:
待续。。。。。。