巴什博奕

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1846

只有一堆石子共n个。每次从最少取1个,最多取m个,最后取光的人取胜。问先手是否有必胜策略,第一步该怎么取。

如果n=(m+1)*k+s (s!=0) 那么先手一定必胜,因为第一次取走s个,接下来无论对手怎么取,我们都能保证取到所有(m+1)倍数的点,那么循环下去一定能取到最后一个。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>

using namespace std;

int n,m;

int main()
{
    int t;
    cin>>t;
    while( t-- )
    {
        cin>>n>>m;
        if( n%(m+1) ) puts("first");
        else puts("second");
    } 
} 
全部评论

相关推荐

2025-11-26 09:37
山西大学 测试工程师
我要娶个什么名:学长你电脑闹鬼了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务