A - hide handkerchief

本文介绍了一种在围成一圈的N个盒子中寻找隐藏手帕的游戏算法,通过设定M值来确定搜索模式,探讨了如何确保每个盒子都能被访问到的条件。核心在于计算N和M的最大公约数,若为1则表明可以遍历所有盒子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

A - hide handkerchief

Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

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

 

题目简述:

假设有N个人在玩这个游戏,他们坐在地上围成一个圈,每个人背后都有一个盒子,还有一条漂亮的手帕藏在一个盒子里。

然后,我的一个朋友叫他去找手帕。但他有一个奇怪的习惯。每次他都会搜索下一个由M-1个盒子与当前盒子隔开的盒子。例如,有三个盒子,分别名为A、B、C,现在Haha在A的位置,现在他决定M等于2,所以他先搜索A,然后搜索C盒子,因为C与当前框A之间用2-1=1的B盒子隔开。然后他将搜索盒子B,然后搜索盒子A。

所以三次之后,他确定他能找到漂亮的手帕。现在我给你N和M,你能告诉我哈哈能不能找到手帕。如果他能,你应该告诉我“YES”,否则告诉我“POOR Haha”。

解题思路:

个人认为,题目的本题的基本题意就是在于对于围成圈的N个盒子每次跳过M-1个盒子进行访问,看是否最后能够遍历到每个盒子。本质上是一个求GCD的问题,如果N和M的GCD等于1,那么,经过多少圈之后,这个圈里的每一个盒子都会被遍历到,但是如果最大公约数不是1,那么在第一圈转完之后会出现循环的情况。所本题的本质就是GCD。辗转相除求GCD就好了。

编码:

#include <bits/stdc++.h>

using namespace std;

int gcd(int a,int b)
{
    if (!b)
        return a;
    else
        return gcd(b, a % b);
}

int main()
{
	int n, m;
	while (cin >> n >> m)
    {
        if (n == -1 || m == -1)
            break;
        else
        {
            if (gcd(n, m) == 1)
                cout << "YES" << endl;
            else
                cout << "POOR Haha" << endl;
        }
    }
	return 0;
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值