zoukankan      html  css  js  c++  java
  • hdu 5512 Pagodas

    题目大意: 在牛首山与云台山之间的红觉寺,有n座宝塔直立,标有1至n号。 然而,只有其中两个(标记为a和b,其中1≤a≠b≤n)经受住了时间的考验。
    两个和尚Yuwgna和Iaka决定再次辉煌。 他们轮流建造宝塔,Yuwgna第一。 对于每一回合,如果存在两座直立的宝塔,分别标记为j和k,则可以重建标记为i(i∉{a,b}和1≤i≤n)的新宝塔,使得i = j + k或i= J-K·。 每座宝塔都不能重建两次。这是他们的游戏。 无法重建新宝塔的僧侣将失去游戏。


    解题思路:在草稿纸上模拟几次就会发现其实就是观察是否有 一个高度 h存在  a*x+b*y =h 。如果有,那么这个塔肯定要建。如果h不符合,那么是不可能建造高度为h的塔。由扩展欧几里得可知,只有当 h%gcd(a,b) == 0时存在

    AC代码:

     1 #include<iostream>
     2 #include<stdio.h>
     3 using namespace std;
     4 int Gcd(int a,int b){
     5     if(b==0){
     6         return a;
     7     }
     8     return Gcd(b,a%b);
     9 }
    10 int main(){
    11     int T,times=0;
    12     cin>>T;
    13     while(T--){
    14         times++;
    15         int n,a,b;
    16         cin>>n>>a>>b;
    17         printf("Case #%d: ",times);
    18         int gcd=Gcd(a,b);
    19         int ans=n/gcd-2;
    20         if(ans&1){
    21             cout<<"Yuwgna"<<endl;
    22         }else{
    23             cout<<"Iaka"<<endl;
    24         }
    25     }
    26     return 0;
    27 }
  • 相关阅读:
    一个通用的事件监听函数全集
    单应性矩阵
    opencv姿态估计
    opencv相机标定
    Harris角点
    盒滤波Box Filter
    win10+vs2015+pcl1.8.1安装配置
    图像元素遍历
    阈值分割
    二叉树的层次遍历
  • 原文地址:https://www.cnblogs.com/ISGuXing/p/8798565.html
Copyright © 2011-2022 走看看