zoukankan      html  css  js  c++  java
  • hdu5512-Pagodas

    题目大意:

    有n个庙经过长时间风吹雨打需要修补,只有两座(被标记为a,b)完好无损不需要修补,有两个和尚轮流去修补这n-2个庙,每个和尚每次只能修补一个庙标记为i,并要求i满足i=j+k或者i=j-k,每个庙只能被修建一次;

    其中j和k代表已经修建好的庙,Yuwgna先开始,问最后谁不能修建谁输;

    思路:一看题目博弈论,后来就是找 m, n 的最大公约数

    #include <iostream>
    #include <cstdio>
    using namespace std;
    
    int gcd(int a, int b)
    {
        if(b > 0)
            return gcd(b, a%b);
        return a;
    }
    
    int main()
    {
    //    freopen("test.txt", "r", stdin);
        int t;
        scanf("%d", &t);
        for(int i = 1; i<= t; i++)
        {
            int n, a, b;
            scanf("%d%d%d", &n, &a, &b);
            printf("Case #%d: ", i);
                int q = gcd(a, b);
                if(q == 1)
                {
                    if(n%2 == 0)
                    printf("Iaka
    ");
                    else{
                    printf("Yuwgna
    ");
                    }
                }
                else{
                    q = n/q;
                    if(q%2 == 0)
                    printf("Iaka
    ");
                    else{
                    printf("Yuwgna
    ");
                    }
                }
    
        }
        return 0;
    }
    
    转载请注明出处:http://www.cnblogs.com/ygdblogs
  • 相关阅读:
    理解闭包
    .net 应用程序执行过程
    Lambda 表达式
    栈的应用
    C# string
    自包含 与 自描述
    C# 值类型 与 引用类型
    C# 装箱 与 拆箱
    sql server分页的两种方法比较
    九月天开博日志
  • 原文地址:https://www.cnblogs.com/ygdblogs/p/4935694.html
Copyright © 2011-2022 走看看