【ACM】hide handkerchief


最近在刷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;
}

声明:楓の街|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 【ACM】hide handkerchief


Just For Fun...