您的位置:首页 > 其它

hdu1222之辗转相除法

2017-09-09 10:39 316 查看


Wolf and Rabbit

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 9014    Accepted Submission(s): 4585


Problem Description

There is a hill with n holes around. The holes are signed from 0 to n-1.



A rabbit must hide in one of the holes. A wolf searches the rabbit in anticlockwise order. The first hole he get into is the one signed with 0. Then he will get into the hole every m holes. For example, m=2 and n=6, the wolf will get into the holes which are
signed 0,2,4,0. If the rabbit hides in the hole which signed 1,3 or 5, she will survive. So we call these holes the safe holes.

 

Input

The input starts with a positive integer P which indicates the number of test cases. Then on the following P lines,each line consists 2 positive integer m and n(0<m,n<2147483648).

 

Output

For each input m n, if safe holes exist, you should output "YES", else output "NO" in a single line.

 

Sample Input

2
1 2
2 2

 

Sample Output

NO
YES

 

Author

weigang Lee

 

Source

杭州电子科技大学第三届程序设计大赛

 

Recommend

Ignatius.L   |   We have carefully selected several similar problems for you:  1207 1299 1219 2175 1995 

题目大意:现在给出一个环(0到n-1,逆时针增大),再给出一个m,每隔m把那个数标记,现在给出m,n,问是否有一些数没被标记,如果有输出YES,否则输出NO。

题目分析:看见这个题,起初打算模拟一下看是否起点能是前m个点,后来发现直接判断是否最大公约数是否为1即可。

代码:
#include <algorithm>
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <time.h>
#include <queue>
#include <cmath>
#include <map>

using namespace std;

int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}

int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int T;
scanf("%d",&T);
while(T--)
{
int n,m;
scanf("%d%d",&m,&n);
int ans=gcd(max(m,n),min(m,n));
if(ans==1){
printf("NO\n");
} else {
printf("YES\n");
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hdu1222 辗转相除法