给出
n
≤
2
e
4
n\leq2e4
n≤2e4个数,然后有两个数
a
,
b
a,b
a,b是一开始就有的,然后你每次可以选择生成一个数
1
≤
i
≤
n
1\leq i \leq n
1≤i≤n,并且满足
i
=
j
+
k
i=j+k
i=j+k或者
i
=
j
−
k
i=j-k
i=j−k,其中
j
,
k
j,k
j,k是已经存在的两个数,然后两人轮流进行,求问谁先无法操作就输。
实际上和博弈论的关系不大。生成的数一定是可以表示为
a
x
+
b
y
ax+by
ax+by的形式,而且保证了范围是
1
1
1到
n
n
n的。也就是
1
1
1到
n
n
n中所有的
g
c
d
(
a
,
b
)
gcd(a,b)
gcd(a,b)的倍数,然后根据奇偶性判断就好了。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
int gcd(int x,int y) {
if(y==0) return x;
else return gcd(y,x%y);
}
int main() {
int T;
scanf("%d",&T);
int kase=0;
while(T--) {
int n,a,b;
scanf("%d%d%d",&n,&a,&b);
int GCD=gcd(a,b);
int tot=n/GCD;
if(tot&1) printf("Case #%d: Yuwgna\n",++kase);
else printf("Case #%d: Iaka\n",++kase);
}
return 0;
}