题意:给你三个数:n,a,b,一开始集合里面有两个数:a和b,然后两个人轮流往这个集合里面增加数字,增加的这个数字的原则是:这个集合里面任选两个数的和或差(a + b或a - b或b -a的中的任意一个没被选中的符合[1,n]的点 ),集合里面的数字不能重复,同时这个数字不能大于 n ,求最后哪个人选不了满足条件的数了。
思路:当且仅当 a和b处于某个等差数列(差值不为1)时,才无法使得所有位置都建上塔。相反,则n个位置均可建塔。等差数列的差值 d = gcd(a, b)。求出可以建塔的个数就可以了。

#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b)
{
   
	return b ? gcd(b,a%b) : a;
}
int main()
{
   
	int t;
	scanf("%d", &t);
	for(int cas=1; cas<=t; cas++) {
   
		int n,a,b;
		scanf("%d%d%d", &n,&a,&b);
		if(n/gcd(a,b) % 2)
			printf("Case #%d: Yuwgna\n",cas);
		else
			printf("Case #%d: Iaka\n",cas);
	}
	return 0;
}