• 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 }
  • 相关阅读:
    hdu 3507 Print Article —— 斜率优化DP
    bzoj 1096 仓库建设 —— 斜率优化DP
    ORDER BY 高级用法之CASE WHEN
    union和union all 的区别
    Ubuntu 链接ln的使用:创建和删除符号链接
    python中set和frozenset方法和区别
    python之sys模块详解
    odoo 8.0 多核启用
    Odoo 中的widget
    Odoo 在 Ubuntu 环境下性能调优
  • 原文地址:https://www.cnblogs.com/ISGuXing/p/8798565.html
Copyright © 2020-2023  润新知