zoukankan      html  css  js  c++  java
  • 巴什博弈

    这里有这样的一个游戏:

    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;
    }
  • 相关阅读:
    Springboot vue 前后分离 跨域 Activiti6 工作流 集成代码生成器 shiro权限
    mybatis3批量更新 批量插入
    Java GC的工作原理详解
    Hadoop的Map侧join
    cut 命令
    head 与 tail
    常用正则
    vim 设置
    Java泛型初探
    linux修改PS1,自定义命令提示符样式
  • 原文地址:https://www.cnblogs.com/yaobolove/p/4109218.html
Copyright © 2011-2022 走看看