Pagodas
Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u
Submit
Status
Practice
HDU 5512
Description
$n$ pagodas were standing erect in Hong Jue Si between the Niushou Mountain and the Yuntai Mountain, labelled from $1$ to $n$. However, only two of them (labelled a and b, where $1\le a\neq b\le n$) 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 i~(inotin{a,b}and{1le ile n)$ if there exist two pagodas standing erect, labelled $j$ and $k$ respectively, such that $i=j+k$ or $i=j-k$. 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 t(1 t 500) which is the number of test cases.
For each test case, the first line provides the positive integer n(2le nle 20000)$ and two different integers a and b.
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
/*題意就是兩個和尚修塔他們只能修已經修好的i-j 或者 i+j
剛開始給了我我們兩個已經修好的塔 a,b
我們就找他們兩個可以修到的最小的下標的那個塔 一直a = a-b~~~
直到a<b然後b=b-a~~以此類推直到a==b 發現這不就是歐幾里得定理?
所以直接GCD(a,b); 求出來最小的那個塔 這樣他們能修的塔正好就是一個等差數列 這樣就好辦 減去剛開始的兩個 對2取餘就好了
這麼詳細代碼就不打註釋了\(^o^)/
*/#include "cstdio"int GCD(int a,int b)
{
if(b==0)
return a;
return GCD(b,a%b);
}
int n;
int T;
int t;
int a,b;
int main(){
scanf("%d",&T); t=1;
while(T--){
scanf("%d%d%d",&n,&a,&b);
int g=GCD(a,b);
int ans=n/g-2;
if(ans%2==1)
printf("Case #%d: Yuwgna\n",t++);
elseprintf("Case #%d: Iaka\n",t++);
}
return0;
}