标签:
题意:给出n,a,b,现在问你在已有的数字基础之上建立a-b或者a+b的数(这个数不能已经存在(已经存在的的数是a和b),而且必须在1~n之间),Yuwgna先建立,Iaka后建立,那么最终谁不能建立就输了,输出赢的人。。。。。Alice and Bob来袭,吼吼。
举例:14 6 13 那么可以建立的数有:7, 1, 5, 4, 3, 2, 8, 9, 10, 11, 12, 14,所以到Yuwgna就建不成了,Iaka赢。。。。。可以发现a和b的最大公约数就是建立的数之间的间隔,那么总共是n,间隔是最大公约数,可以建立的个数就是总数/间隔了,,,,(发现因子含有最大公约数的数都可以被建立(1~n之间的数))。
#include<stdio.h> #include<string.h> #include<queue> #include<math.h> #include<stdlib.h> #include<algorithm> using namespace std; const int N=1e2+10; const int INF=0x3f3f3f3f; const int MOD=1e9+7; typedef long long LL; int Gcd(int a, int b) { return b == 0 ? a : Gcd(b, a%b); } int main () { int T, n, a, b, c, k = 0; scanf("%d", &T); while (T--) { k++; scanf("%d%d%d", &n, &a, &b); c = Gcd(a, b); n /= c; if (n % 2 == 0) printf("Case #%d: Iaka\n", k); else printf("Case #%d: Yuwgna\n", k); } return 0; }
2015ACM/ICPC亚洲区沈阳站-重现赛 1004 Pagodas
标签:
原文地址:http://www.cnblogs.com/syhandll/p/4926262.html