HDU 5512 Pagodas(2015-ICPC-沈阳站)
题目连接:题目
题目大意:有n个庙经过长时间风吹雨打需要修补,只有两座(被标记为a,b)完好无损不需要修补,有两个和尚轮流去修补这n-2个庙,每个和尚每次只能修补一个庙标记为i,并要求i满足i=j+k或者i=j-k,每个庙只能被修建一次;其中j和k代表已经修建好的庙,Yuwgna先开始,问最后谁不能修建谁输;
解题思路
博弈论,看剩下的庙是不是GCD(a,b)的倍数,偶数倍是Yuwbna赢否则就是Iaka赢
#include <bits/stdc++.h> using namespace std; int main() { int t; scanf("%d", &t); int kase = 1; while(t--) { printf("Case #%d: ", kase++); int n, a, b; scanf("%d %d %d", &n, &a, &b); int gcd = __gcd(a, b); int num = n / gcd - 2; if(num % 2) puts("Yuwgna"); else puts("Iaka"); } return 0; }