最大公约数——Program G

最大公约数

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

题目大意:狼钻入洞中寻找兔子,第一次从编号为0的洞口进入,再从第m个洞口进入,问狼能否吃到兔子,如果可以输出“YES”,否则输出“NO”.

分析:此题为最大公约数,如果gcd(m,n)==1,则狼就能吃到兔子。

代码如下:

#include <iostream>
#include <cstdio>

using namespace std;
unsigned int gcd(unsigned int a,unsigned int b)
{
	return b==0? a:gcd(b,a%b);
}
int main()
{
	int t;
	unsigned int m,n;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%u%u",&m,&n);
		if(gcd(m,n)==1)
			printf("NO\n");
		else
			printf("YES\n");
	}
	return 0;
}
时间: 2024-11-01 14:05:36

最大公约数——Program G的相关文章

eclipse: Program &quot;g++&quot; not found in PATH

gdb命令行调试虽然还行,但是确实不如图形界面的直观...个人还是不习惯,就开始鼓捣eclipse的c/c++IDE(VS2013安装需要IE10,蛋疼,懒得弄) Build一个C工程的时候报错.我安装了MinGW并且安装了C编译器,但是没有安装C++编译器,也就是只有gcc.exe但是没有g++.exe 并且MinGW的bin目录也配置到了PATH变量中. 解决办法: 打开MinGW Installer,选中C++编译器,下载安装即可,如图

Eclipse编译时Cannot run program &quot;make&quot;:?????

在确定环境变量配置正确(命令行运行make成功)的情况下,如果使用Eclipse编译C程序,控制台报告Cannot run program "make":?????"?错误,那么很有可能的错误是org.eclipse.cdt.core.win32_5.2.0.201202111925 (Eclipse的plugin目录下)出现了错误.可以通过替换或者重新安装CDT来解决这个问题. 参考:http://bbs.csdn.net/topics/380228213 Error: C

12周(求多组书最大公约数)

/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作    者:王忠 * 完成日期:2014 年 11  月  16  日 * 版 本 号:v1.0 * * 问题描述:求N组数的最大公约数: * 输入描述: 输入组数n,输入每组中的数字: * 程序输出: 输出每组中的最大公约数 #include <iostream> using namespace std; int gcd(int x,int

Java最大公约数和最小公倍数

最大公约数有下面两种方法: 辗转相除法:又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公约数的算法. 辗转相减法:即尼考曼彻斯法,其特色是做一系列减法,从而求得最大公约数. 以下为Java代码: public class JavaBase { static public int gcd1_1(int x, int y)   //非递归的辗转相除法 { int temp; do{ temp = x % y; x = y; y = temp; }while(temp

求解最大公约数和最小公倍数问题

思路: 最大公约数问题也是一个非常典型的递归算法的应用.每次递归使得原来求两个大数之间的公约数转变成求两个稍微小点的数之间的公约数,要求转换的过程要保证不会改变公约数的值.这就要看其中转换的原理了. 原理从<几何原本>中得出--辗转相除.假设f(x, y) 表示x,y的最大公约数是g,而k = x/y,b= x%y,则g必能整出b.因为x = ky + b,b = x - ky,b/g = (x-ky)/g一定为整数,所以必有g整除b. 如下所示: f(42, 30) = f(30, 12)

最大公约数和最小公倍数 UVa11388

1.题目描述:点击打开链接 2.解题思路:本题通过观察发现,如果两个数a,b的最大公约数是G,那么G≤a且G≤b.因此直接令a=G即可.如何判断是否有解呢,只需要看是否满足gcd(G,L)==G就行了.如果满足,b=L. 3.代码: #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<algorithm> #include<string> #include<sstream> #include

11周(函数求最大公约数)

/* *copyright(c) 2014,烟台大学计算机学院 *All rights reserved. *文件名称:测试控制符号 *作者:王忠 *完成日期:2014.10.30 *版本号:v1.0 * *问题描述:使用函数求出两个数的最大公约数 *输入描述:输入两个数 *程序输出:最大公约数 #include <iostream> using namespace std; int gcd(int x,int y); int main() { int a,b,g; cin>>a&

HDU 1573 X问题

http://acm.hdu.edu.cn/showproblem.php?pid=1573 解出最小解rr后,特判下其是否为0,为0的话,就直接n / lcm 否则 + 1 #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <algorithm> using namespace std; #define inf (0x3f3f3f3

eclipse3.7.2+cdt+mingw

开发环境 1. MinGW 下载并安装(参考: http://blog.csdn.net/hemingwang0902/article/details/6889595) MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境,它是Minimalist GNU on Windows的略称.当前最新版本为:mingw-get-inst-20110802.exe 1. 官方下载地址:http://downloads.sourceforge.net/project/mingw/Automa