最近在刷ACM题目的时候,遇到一道无法理解题意的题目,刚开始没看懂题目想表达什么,看了很久,意思大概就是n个人围成一个圈,大家玩找手帕游戏,手帕藏在某一个人的箱子里,Haha来找,每一次他都会跳过m-1个人。问你Haha是不是一定能找到手帕。因为Haha找的次数是无限的,可以永远找下去,所以,只要他能把所有的人都找一遍就一定能找到。
按照他的这种找法,如果n和m不互质的话,就会出现某些人是永远不会找,所以看一下 n和m的最大公约数是否等于1就行了(欧几里得算法)。
题目:
AC代码:
#include<stdio.h>
int gcd(int n,int m)
{
int r;
while(m)
{
r = n % m;
n = m;
m = r;
}
return n;
}
int main()
{
int n, m;
while(scanf("%d %d",&n, &m) != EOF)
{
if(m == -1 || n == -1)
break;
else if( gcd(n,m) == 1)
printf("YES\n");
else
printf("POOR Haha\n");
}
return 0;
}
Comments | NOTHING