题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=1222
题目描述:
给你两个数字一个m,一个n,然后要叫你判断按照每隔m个去遍历总个数为n的洞,看有没有没遍历到的洞。比如:m=1,n=3,那么你要去遍历就是0,1,2,没有空余的洞,即全部遍历到了,就输出"NO"。
再举个例子,如:m=4,n=8,要去找的话就是,0,4等等无限循环。所以遍历不到1,2,3,5,6,7,所以小兔子可以存活,即输出“YES”。
思路:
相信大家都想的到,不就是找最大公约数嘛。所以,你想对了!注意一点就是,m==1的时候是输出NO的。好了直接上代码了。
AC代码
#include <stdio.h>
#include <iostream>
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b){
return (b==0)?a:gcd(b,a%b);
}
int main(){
int T;
ll m,n;
scanf("%d",&T);
while(T--){
scanf("%lld%lld",&m,&n);
if(m==1||gcd(m,n) == 1){
printf("NO\n");
continue;
}
printf("YES\n");
}
return 0;
}