Meeting
Time Limit:20 Sec
Memory limit:256 MB
Topic Connection
http://acm.hdu.edu.cn/showproblem.php?pid=5512
Descriptionn pagodas were standing erect in Hong Jue Si between the Niushou Mountain and the Yuntai Mountain, labelled fro M 1 to N. However, only of them (labelled A and B, where 1≤a≠b≤n) withstood the test of time.
Monks, Yuwgna and Iaka, decide to make glories great again. They take turns to build pagodas and Yuwgna takes first. For each turn, one can rebuild a new pagodas labelled I (i∉{a,b} and 1≤i≤n) if there exist II pagodas standing erect, lab Elled J and K respectively, such that i=j+k or i=j−k. Each pagoda can is rebuilt twice.
This was a game for them. The monk who can rebuild a new pagoda would lose the game.
Input
The first line contains a integer t (1≤t≤500) which is the number of test cases.
For each test case, the first line provides the positive integer n (2≤n≤20000) and the different integers a and b.
Output
For each test case, output the winner (' Yuwgna ' or ' Iaka '). Both of them would make the best possible decision each time.
Sample Input
16
2 1 2
3 1 3
67 1 2
100 1 2
8 6 8
9 6 8
10 6 8
11 6 8
12 6 8
13 6 8
14 6 8
15 6 8
16 6 8
1314 6 8
1994 1 13
1994 7 12
Sample Output
Case #1: Iaka
Case #2: Yuwgna
Case #3: Yuwgna
Case #4: Iaka
Case #5: Iaka
Case #6: Iaka
Case #7: Yuwgna
Case #8: Yuwgna
Case #9: Iaka
Case #10: Iaka
Case #11: Yuwgna
Case #12: Yuwgna
Case #13: Iaka
Case #14: Yuwgna
Case #15: Iaka
Case #16: Iaka
HINT
Test instructions
There are n locations, and a pagoda has been built at a A, b location, and each site can only be built once.
Then two people built the pagoda in turn.
If the pagoda is to be built at x location, then a stupa is required to satisfy the presence i,j position, and x = i + j or x = I-j
Who can't build, who loses.
Let you output the last who can win
Exercises
This is a game theory, when you see A-B, think of gcd ...
Dare to guess the conclusion ... the odd and even numbers of N/GCD (A, B)
Code
#include <iostream>#include<stdio.h>using namespacestd;intgcdintAintb) { returnb==0? A:GCD (b,a%b);}intMain () {intT;SCANF ("%d",&t); for(intcas=1; cas<=t;cas++) { intA,b,n; CIN>>n>>a>>b; intFlag = n/gcd (A, b); if(flag%2==0) printf ("Case #%d:iaka\n", CAs); Elseprintf ("Case #%d:yuwgna\n", CAs); }}
Game Theory of HDU 5512 meeting