HDOJ 1222 Wolf and Rabbit(数学解题技巧)

来源:互联网 发布:淘宝运营常用软件 编辑:程序博客网 时间:2024/05/17 07:38

题目意思:

    给出狼遍历的间隔M和兔子洞的数目N;兔子洞的编号为(0,1————n-1);狼从0开始找,下次找的编号为+m;可以从队尾接着从头遍历,无限循环下去,问是否有一个洞是否没有遍历可以让兔子存活。

(0)  1    (2)   3   (4) 5    (0) 1   (2) 3   (4)   5   (0) 1   (2)    3   (4)   5     (0)………………

题目分析:

 设在N个点的圈中,按间隔M访问一下,首尾相连一个圆可以无限循环遍历;
下一圈遍历时新的起点如果要比上一圈的开始节点间隔为1,这样循环下去可以遍历所有1-M节点,这样就可以遍历所有节点。
那么问题就转化为能否遍历1-M中所有的点,利用辗转想处判断他们的余数是否为1。

#include<iostream>
#include<cstring>
using namespace std;
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}//辗转相除,除到一个为0 
int main()
{
int m,n,t;
cin>>t;
while(t--)
{
cin>>m>>n;
if(gcd(m,n)==1)
cout<<"NO"<<endl;
else 
cout<<"YES"<<endl;
}
return 0;
}

0 0
原创粉丝点击