zoukankan      html  css  js  c++  java
  • HDU 1222 Wolf and Rabbit(数论)

    题目链接

    题目大意

      有一座山旁边为N个山洞连成环形,编号为0,1,2,3,4,...n-1一头兔子和一只狼来到了这座山上.为了防止被狼捉到,兔子需要藏进某个洞里 ,狼第一次进入编号为0的洞口,然后每次只能前进m个洞口,例如m=2,n=6,则狼将进入0,2,4,0,2,4....所以兔子只需躲在编号为1 3 5 的洞里即可逃生。

    解题思路

      当n与m互质的时候,狼肯定能访问到每个洞,负责不能。
      证明:当n与m互质的时候,如果需要走到0号洞,那么就必须走lcm(n,m)步,又因为有n个洞,所以必需要走(n imes m)步,那么就需要gcd(n,m)=1才能使(lcm(n,m)=n imes m)。但是还漏了一点,虽然走了n个洞,但是怎么证明每个洞都不一样呢?之前说了,lcm(n,m)是最小的循环节,如果在这个循环节中出现了两个相同的数,说明这两个数之间的数再加上两个中的一个是一个更小的循环节,与之前的结论矛盾了,所以说当gcd(n,m)=1的时候走过(n imes m)步一共能走过n个不同的洞。

    代码

    const int maxn = 2e3+10;
    const int maxm = 1e4+10;
    int main() {
        int t; cin >> t;
        while(t--) {
            ll a, b; cin >> a >> b;
            if (__gcd(a,b)==1) cout << "NO" << endl;
            else cout << "YES" << endl;
        }
        return 0;  
    }
    
  • 相关阅读:
    iOS-修改导航栏文字字体和颜色
    iOS-cocoapods使用方法
    iOS-创建UIScrollerView(封装UIScrollerView)
    iOS-根据两个经纬度计算相距距离
    iOS-JS调用OC代码
    iOS-tableView刷新指定行,组
    雷赛dmc2410控制卡,驱动器 光栅 加电机
    做自己的类库dll文件
    Sender
    BackGroundWorker控件的使用注意
  • 原文地址:https://www.cnblogs.com/shuitiangong/p/13674403.html
Copyright © 2011-2022 走看看