大灰狼和小白兔

来源:互联网 发布:类似ehviewer的软件 编辑:程序博客网 时间:2024/06/09 17:26

大灰狼和小白兔

 链接地址

http://acm.nbu.edu.cn:8080/JudgeOnline/showproblem?problem_id=1371

时空限制

Time limit:1 Seconds   Memory limit:65536K

题目内容

Description

在一个遥远的地方,有一座不知名的高山,周围有 n 个兔子的窝,分别标记为 0 n-1 。小白兔隐藏在其中,大灰狼从 0 号窝开始按着逆时针的方向寻找,每隔 m 个洞查找一次。 例如: n = 6, m = 2, 则大灰狼寻找窝的序号依次为 0240,...。如果小白兔藏在13,或5号窝中,那么小白兔则会很安全。

Input

输入以一个正整数P开始,表示有P组测试数据,接着有P行,每行有两个正整数 m n (0 < m,n < 2147483648)

Output

对于输入的每组 m n, 如果有安全的窝存在,输出 "YES" ,否则输出 "NO"

Sample Input

2

1 2

2 2

Sample Output

NO

YES

Source

 

 解题思路(算法)

根据题目得这个题目就是让我们求(km mod n)=i这个方程对与i0n-1是否都有整数解k;如果都有那么小白兔就找不到安全的窝,输出NO,否则的话输出YES

将方程变形成km+tn=i;

如果mn互质,那么对于km+tn=i;i保持不变

  那么方程必然可以表示成(k0+un)m+(t0+vm)n=i;

      说明大灰狼必须经过u*n次查找才会找到相同的一个洞,所以u取最小为1,那么在这n次查找中查找的窝必然都是不相同的,而i的取值只能从0n-1n个数,所以大灰狼找遍了所有的洞,小白兔找不到安全的窝,输出NO

如果m,n不互质,即存在大于1的最大公约数d=gcdmn);

  那么将mn都除以d,变为mm=m/d,nn=n/d;

此时mmnn互质,由上得

     对于k*mm+t*nn=i;i能取到0nn-1的所有值;

     k*m/d+t*n/d=i;(i=0…n/d-1);  1)

1)式两边都乘以d得:

      k*m+t*n=i*d;(i=0…n/d-1)

k*m+t*n=ii;(ii=0,d,2*d,3*d…n-d);

所以大灰狼只检查了02*d3*d..n-d这几个窝,其他的窝是安全的;所以存在安全的窝

输出YES

程序代码

#include<iostream.h>

int gcd(int x,int y)

{

  if(y==0) return x;

  else return gcd(y,x%y);

}

int main()

{

  int n,m,p,i;

   while(cin>>p)

   {

        for(i=1;i<=p;i++)

        {

       cin>>n>>m;

          if (n>m)

          {

                if  (gcd(n,m)>1) cout<<"YES"<<endl;

                   else cout<<"NO"<<endl;

          }

          else

          {

              if (gcd(m,n)>1)

                     cout<<"YES"<<endl;

              else cout<<"NO"<<endl;

          }

        }

   }

   return 0;

}

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 gg修改器是病毒怎么办 传送门骑士联机读条慢怎么办 被打成轻伤派出所不抓人怎么办 有人上门找事怎么办算正当防卫吗 win10 电脑账户被停用怎么办 电脑一键还原后黑屏怎么办 win一键还原后黑屏怎么办 打架对方群殴我我怎么办 杀了人没钱赔怎么办 团伙打架被对方所刀捅伤怎么办 过失致人重伤赔偿不起怎么办 被别人打了派出所不管怎么办 先动手的被打伤怎么办 自为伤了人怎么办? 孩子被打不敢还手怎么办 小孩给电打了怎么办 电打了手都黑了怎么办 手指被电打伤了怎么办 电打了手有点麻怎么办 没打人对方确弄个轻伤证明怎么办 对人造成轻伤害怎么办 如果有人要砍我怎么办 美版手机坏了怎么办 战地4ping太高怎么办 喝了红牛睡不着怎么办 球球大作战总是闪退怎么办解决方法 球球大作战手机号己绑定怎么办 弄的底窝中药味太大怎么办 锤子手机上不了网怎么办 ppt没保存就卡了怎么办 ppt卡了没保存怎么办 匡威鞋舌头跑偏怎么办 霍尼韦尔dcs cb锁死怎么办 谷歌身份验证器丢失 怎么办 叛乱2手雷没了怎么办 王者转移号封了怎么办? 电脑被入侵挖矿怎么办 我把exe删除了怎么办 大学图书馆借书超过期限了怎么办 win10更新完鼠标没有了怎么办 打开软件提示运行出错怎么办