Description
pagodas were standing erect in Hong Jue Si between the Niushou Mountain and the Yuntai Mountain, labelled from
to
. However, only two of them (labelled
and
, where
) withstood the test of time.
Two 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 if there exist two pagodas standing erect, labelled and respectively, such that or . Each pagoda can not be rebuilt twice.
This is a game for them. The monk who can not rebuild a new pagoda will lose the game.
Two 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 if there exist two pagodas standing erect, labelled and respectively, such that or . Each pagoda can not be rebuilt twice.
This is a game for them. The monk who can not rebuild a new pagoda will lose the game.
Input
The first line contains an integer
which is the number of test cases.
For each test case, the first line provides the positive integer and two different integers and .
For each test case, the first line provides the positive integer and two different integers and .
Output
For each test case, output the winner (``Yuwgna" or ``Iaka"). Both of them will 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
题意:给出n个塔,a,b是修过的,接下来只能修编号(a+b)或者(a-b),两人轮流,问谁能赢。
题解:看到两人轮流就想到了gcd,(类似轮流拆数字)不过限制条件是i=a+b,i=a-b,一开始没想通。其实还是求gcd(a,b),虽然a,b一直在变,但都是基于最初的a,b.证明
<span style="font-size:18px;">#include<cstdio>
#include<cstring>
using namespace std;
int gcd(int a,int b){
return b==0?a:gcd(b,a%b);
}
int main(){
int t,n,a,b,cas=1;;
scanf ("%d",&t);
while (t--){
scanf ("%d %d %d",&n,&a,&b);
printf ("Case #%d: ",cas++);
int s=n/gcd(a,b);
if (s&1)
printf ("Yuwgna\n");
else
printf ("Iaka\n");
}
return 0;
} </span>