HDU 1222 Wolf and Rabbit

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1222

当m和n互质的时候,wolf可以走过所有的洞。

因为当以步数为m来数n个数的时候,数过一周以后,偏移量是n%m,于是新的起点是n%m,要数到所有的数字,就必须把1-m区间当中的数都数到,没数过一周,在1-m这个区间内,前进的步数都是n%m,因此可以进一步描述问题,在1-m这个区间之内,每次前进n%m次,能否将所有的点都数过,于是n=m,m=n%m,直到最后m=1,这样所有的点都会被数过,这便是最大公约数的问题。

#include<iostream>
#include<cstdio>
using namespace std;
int gcd(int a,int b){
	while(a%b!=0){
		int r = a%b;
		a=b;
		b=r;
	}
	return b;
}
int main(){
	int p;
	scanf("%d",&p);
	while(p--){
		int m,n;
		scanf("%d %d",&m,&n);
	    if(gcd(m,n)==1){
	    	printf("NO\n");
	    }else{
	    	printf("YES\n");
	    }
	}
	return 0;
} 

 

posted @ 2015-06-06 14:36  湖心北斗  阅读(195)  评论(0编辑  收藏  举报