zoukankan      html  css  js  c++  java
  • HDU 5512 Pagodas(2015ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学))

    Pagodas

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
    Total Submission(s): 3502    Accepted Submission(s): 2324


     

    Problem 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 aand b, where 1≤a≠b≤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 (i∉{a,b} and 1≤i≤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 (2≤n≤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

     

    Source

    2015ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学)

     题意:

    给你三个数n  a  b

    代表这里有n个石子,编号分别为1~n,刚开始从中取出编号为a和b的石子,然后两个人轮流从中取出石子,取出的石子必须满足

    j+k或j-k,其中j,k是已经取出石子的编号,问最后谁赢了。

    分析:

    在取石子的过程中首先|a-b|=c,取石子c,然后让|c-b|取石子,这样到最后取得的石子编号是a和b的最大公约数(更相减损术),也就是GCD(a,b)

    那么在取石子的过程中 所有取得的石子都是GCD(a,b)的倍数,(因为a,b都是他们的倍数,所以进行加减之后不管怎样,得出的数都是他们的倍数),所以根据这个编号为GCD(a,b)的石子,可以把所有gcd(a,b)倍数的石子全部取出。也就是共n/gcd(a,b)个石子,

    而且不管取的顺序咋样,都能够取到这n/gcd(a,b)的石子,所以只要判断n/gcd(a,b)的奇偶即可。

    代码先不放:

  • 相关阅读:
    【C++】C++ primer 第三章学习笔记
    【C++】C++ primer 第二章学习笔记
    【C++】C++ primer 第一章学习笔记
    【C++】C++ sort函数
    【C++】C++ primer 第五版 Sales_item.h源码
    【其他】MarkDown的使用
    Dockerfile最佳实践
    docker跨主机通信--模拟flannel host-gw直接路由
    pod 生命周期hook钩子函数
    docker mysql 修改密码
  • 原文地址:https://www.cnblogs.com/dchnzlh/p/10427313.html
Copyright © 2011-2022 走看看