HDU Wolf and Rabbit &&189 兔子的烦恼(一)【gcd】

一只兔子在山洞中躲避狼的追捕,通过特定的数学原理判断兔子是否能找到安全的藏身之处。输入狼的行动模式和山洞数量,程序利用最大公约数算法决定兔子的命运。

兔子的烦恼(一)

时间限制:1000 ms  |  内存限制:65535 KB
难度:2
描述

在一座山上有n个山洞(每个洞从0~n-1分别编号),这山上有一只兔子躲在山洞里,有一只狼,从编号为0的山洞开始入洞,每隔m-1个洞,再次入洞抓兔子,现在问,兔子能否避免这场灾难?

例如:m=2 and n=6, 狼将要进入的山洞号为:0,2,4,0;

输入
有多组测试数据,不超过1000组;
每组有两个整数m,n(0<m,n<=1000);
注意:程序以文件结束符“EOF”结束输入。
输出
兔子能避免这场灾难输出YES,否则输出NO;
样例输入
1 2
2 2
样例输出
NO
YES

/*
2015年6月13号0:00:00 
*/
#include<stdio.h>
int gcd(int a,int b)
{
	int i=a%b;
	while(i!=0)
	{
		a=b;
		b=i;
		i=a%b;
	}
	return b;
}
int main()
{
	int m,n,a;
	while(~scanf("%d%d",&m,&n))
	{
		a=gcd(m,n);
		if(a!=1)
		{
			printf("YES\n");
		}
		else
		{
			printf("NO\n");
		}
	}
	return 0;
} 


第一次做的时候,想了很久,才大约明白意思,再次做这个,思路清晰了很多,两个数只有在gcd 为1的时候,才能保证全部能遍历到,具体解释自己也不太清楚...


英文版:


Wolf and Rabbit

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 6532 Accepted Submission(s): 3261


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


#include<stdio.h>
int gcd(int a,int b)
{
	if(!b)
	{
		return a;
	}
	return gcd(b,a%b);
}
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int n,m;
		scanf("%d%d",&n,&m);
		if(gcd(n,m)==1)
		{
			printf("NO\n");
		}
		else
		{
			printf("YES\n");
		}
	}
	return 0;
} 





英文版:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值