hide handkerchief

//hide handkerchief 
//Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)  
//Total Submission(s): 3925 Accepted Submission(s): 1317  
//
// 
//Problem Description
//The Children’s Day has passed for some days .Has you remembered something happened at your childhood? I remembered I often played a game called hide handkerchief with my friends.
//Now I introduce the game to you. Suppose there are N people played the game ,who sit on the ground forming a circle ,everyone owns a box behind them .Also there is a beautiful handkerchief hid in a box which is one of the boxes .
//Then Haha(a friend of mine) is called to find the handkerchief. But he has a strange habit. Each time he will search the next box which is separated by M-1 boxes from the current box. For example, there are three boxes named A,B,C, and now Haha is at place of A. now he decide the M if equal to 2, so he will search A first, then he will search the C box, for C is separated by 2-1 = 1 box B from the current box A . Then he will search the box B ,then he will search the box A.
//So after three times he establishes that he can find the beautiful handkerchief. Now I will give you N and M, can you tell me that Haha is able to find the handkerchief or not. If he can, you should tell me "YES", else tell me "POOR Haha".
// 
// 
//Input
//There will be several test cases; each case input contains two integers N and M, which satisfy the relationship: 1<=M<=100000000 and 3<=N<=100000000. When N=-1 and M=-1 means the end of input case, and you should not process the data.
// 
// 
//Output
//For each input case, you should only the result that Haha can find the handkerchief or not.
// 
// 
//Sample Input
//3 2
//-1 -1 
// 
//Sample Output
//YES 
//题意分析,首先很好懂就是M可去遍历N,haha可以无限次的走下去,那个Three times是多次的意思
//这就是看能不能把N遍历一遍,如果可以遍历一遍就证明可以找到,如果不能遍历一遍就不能找到
//查看给出的N,M是否能够达到遍历一遍N,可以想到这两个数是否互为质数,不用在意谁大谁小
//因为可想,只要N,M之前存在不是1的公约数就会有背书存在,产生有遍历不到的情况。可以举例如9和3.大家写一下就知道了。
//另外为什么求最大公约数的方法用辗转相除法主要是(n,m)的公约数等于(m,n%m)的公约数,证明可以“查找欧几里德算法”
#include<stdio.h>
//两种辗转相除方法
//int gcd(int n,int m)
//{
//if(n%m)
//{
// return gcd(m,n%m);
//}
//else
//return m;
//}
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)&&(m!=-1)||(n!=-1)&&(1<=m)&&(m<=100000000)&&(1<=n)&&(n<=100000000)){
if(gcd(n,m)==1)
printf("YES\n");
else
printf("POOR Haha\n");
}
return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值