hdu3951-(Coin Game)

hdu3951-(Coin Game)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3951
题目描述:
 After hh has learned how to play Nim game, he begins to try another coin game which seems much easier.
The game goes like this:
Two players start the game with a circle of n coins.
They take coins from the circle in turn and every time they could take 1~K continuous coins.
(imagining that ten coins numbered from 1 to 10 and K equal to 3, since 1 and 10 are continuous, you could take away the continuous 10 , 1 , 2 , but if 2 was taken away, you couldn’t take 1, 3, 4, because 1 and 3 aren’t continuous)
The player who takes the last coin wins the game.
Suppose that those two players always take the best moves and never make mistakes.
Your job is to find out who will definitely win the game.

Input

The first line is a number T(1<=T<=100), represents the number of case. The next T blocks follow each indicates a case.
Each case contains two integers N(3<=N<=109,1<=K<=10).

Output

For each case, output the number of case and the winner “first” or “second”.(as shown in the sample output)

Sample Input

2
3 1
3 2

Sample Output

Case 1: first
Case 2: second

题意理解:就是讲一个取硬币的游戏,将给的N个硬币围成一圈,两个人分别
次最多取K个硬币,最少1个硬币。但是,如下图,如果第5个硬币被取走,那么下一个人就不能取4,6这两个硬币。每次取的硬币必须是连续的。最后取完的那个人获胜。

在这里插入图片描述
解题思路:
第一个人取了之后,将剩下的硬币展开成直线排列,取这条线对称位置的硬币,如果能取到,这后手必胜。因为从第三次开始,往后每一次无论先手怎么取,我们都只需要取他对称的位置,就能保证必胜,否则必败。但其实在深入一点思考就会发现,其实只有当k=1时,而且刚好该后手时剩下偶数个硬币,后手必败。其余情况后手都能取到对称点
在这里插入图片描述

AC代码:

#include<cstdio>
int main()
{
    int Count = 0;
    int t;
    int m, n;
    scanf("%d", &t);
    while(t--)
    {
        Count++;
        scanf("%d%d", &m ,&n);
        if((n == 1 && (m % 2 == 1)) || m <=n)//只有当k = 1并且一共为奇数个硬币 和 先手第一次就能取完这两种情况先手能赢。
            printf("Case %d: first\n", Count);
        else
            printf("Case %d: second\n", Count);
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值