起初推错了,,
这个题,给定的 a 和 b ,所有的可能修建的点 是 gcd (a,b)的倍数,
因为 任意两个数相加减的运算,相当于 以他们的 gcd 为单位的 运算,最后得到的最小的数 也一定是 他们的 gcd,,
那么这个题就简单了,,看看 n 个数中 有几个 是 gcd(a,b)的倍数,除去 a b 就是他们的可选择项
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn = 10000 + 7, INF = 0x7f7f7f7f, mod = 1e9+7;
int n, a, b;
int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a%b);
}
int main() {
int T;
scanf("%d", &T);
for(int i = 1; i <= T; ++i) {
scanf("%d %d %d", &n, &a, &b);
printf("Case #%d: ", i);
int t = gcd(a, b);
if((n/t) % 2 == 0) {
puts("Iaka");
}
else {
puts("Yuwgna");
}
}
return 0;
}