ICPC沈阳站的D题。一个位置只要能表示为k1*a+k2*b的话这个位置就是能放的。当时傻了想着用扩展欧几里得求出这个k1 k2。其实只要位置能整除gcd(a,b)就可以了。
#include <bits/stdc++.h>
using namespace std;
#define maxn 4111111
int gcd (int a, int b) {
return b == 0 ? a : gcd (b, a%b);
}
int n, a, b;
int main () {
//freopen ("in", "r", stdin);
int t, kase = 0;
cin >> t;
while (t--) {
cin >> n >> a >> b;
int gg = gcd (a, b), ans = 0;
for (int i = 1; i <= n; i++) {
if (i%gg == 0)
ans++;
}
cout << "Case #" << ++kase << ": ";
cout << (!(ans&1)? "Iaka" : "Yuwgna") << endl;
}
return 0;
}