题目连接:题目
题目大意:有n个庙经过长时间风吹雨打需要修补,只有两座(被标记为a,b)完好无损不需要修补,有两个和尚轮流去修补这n-2个庙,每个和尚每次只能修补一个庙标记为i,并要求i满足i=j+k或者i=j-k,每个庙只能被修建一次;其中j和k代表已经修建好的庙,Yuwgna先开始,问最后谁不能修建谁输;
解题思路
博弈论,看剩下的庙是不是GCD(a,b)的倍数,偶数倍是Yuwbna赢否则就是Iaka赢
#include <bits/stdc++.h>
using namespace std;
int main() {
int t;
scanf("%d", &t);
int kase = 1;
while(t--) {
printf("Case #%d: ", kase++);
int n, a, b;
scanf("%d %d %d", &n, &a, &b);
int gcd = __gcd(a, b);
int num = n / gcd - 2;
if(num % 2) puts("Yuwgna");
else puts("Iaka");
}
return 0;
}