题意:给定n,a,b,一开始集合里面有两个数:a和b,然后两个人轮流往这个集合里面增加数字
增加数字的原则是:这个集合里面任选两个数的和或差(a + b或a - b或b -a的中的任意一个没被选中的属于[1,n]的点 ),集合里面的数字不能重复,同时这个数字不能大于n,求先后手胜负关系
2<=n<=5e4,1<=a,b<=n
思路:队友写的,抱大腿
[1,n]中gcd(a,b)的倍数一定能被取到
所以只要判断倍数个数的奇偶性即可
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define LL long long 4 int main() 5 { 6 int T; 7 scanf("%d",&T); 8 int cas=0; 9 while(T--) 10 { 11 int n,a,b; 12 scanf("%d%d%d",&n,&a,&b); 13 int g=__gcd(a,b); 14 printf("Case #%d: ",++cas); 15 if((n/g-2)&1) 16 printf("Yuwgna "); 17 else 18 printf("Iaka "); 19 } 20 }