HDU5512 Pagodas

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++);
        else
            printf("Case #%d: Iaka\n",t++);
    }
    return 0;
}
發佈了95 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章