码迷,mamicode.com
首页 > 其他好文 > 详细

巴什博弈

时间:2014-11-19 22:12:04      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   os   使用   sp   数据   on   

这里有这样的一个游戏:

1、  本游戏是一个二人游戏;

2、  有一堆石子一共有n个;

3、  两人轮流进行;

4、  每走一步可以取走1…m个石子;

5、  最先取光石子的一方为胜;

如果游戏的双方使用的都是最优策略,请输出哪个人能赢。

 Input 输入数据首先包含一个正整数C(C<=100),表示有C组测试数据。 每组测试数据占一行,包含两个整数n和m(1<=n,m<=1000),n和m的含义见题目描述。

 Output 如果先走的人能赢,请输出“first”,否则请输出“second”,每个实例的输出占一行。 

Sample Input

2

23 2

4 3

Sample Output

first

second

巴什博弈:
如果我从中取m个的话,那么面临着n=m+1的情况的话,我就必定会输;所以我令n=k*(m+1)+q,好,如果我先(第一个取的人)从中取q个,然后我接下来的每次取得数目与另一个人取得数目之和为m+1,那么另一个人就必定会输!!!
所以在进行编程的时候我们就会考虑这个条件[n%(m+1)==0],如果满足我就必定会输,否则我就必定会赢!!!
(题目所要求都是我为第一个取得人)

#include<iostream>
using namespace std;
int main()
{
    int n,m,number;
    cin>>number;

    while(number--)
    {cin>>n>>m;
        if(n<=m)
        {
            cout<<"first"<<endl;
            continue;
        }
       else if(n%(m+1)==0)
        cout<<"second"<<endl;
        else
        cout<<"first"<<endl;
    }
            return 0;
}

 

巴什博弈

标签:style   blog   io   color   os   使用   sp   数据   on   

原文地址:http://www.cnblogs.com/yaobolove/p/4109218.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!