zoukankan      html  css  js  c++  java
  • 取石子游戏

    题目描述

    一天小明和小红在玩取石子游戏,游戏规则是这样的:
    (1)本游戏是一个二人游戏;
    (2)有一堆石子,共有n个;
    (3)两人轮流进行;
    (4)每走一步可以取走1~m个石子;
    (5)最先取光石子的一方为胜。
    如果游戏的双方使用的都是最优策略,请输出哪个人能赢。

    输入

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

    输出

    对于每组输入,如果先走的人能赢,请输出“first”,否则请输出“second”。

    样例输入

    2
    23 2
    4 3

    样例输出

    first
    second

    考虑第一个人什么时候赢,如果石子数为1到m,赢,m+1输,m+2可以让对方为m+1,赢,2m+2时怎么取都大于m+1输,2m+3可以取到2m+2让对方输,以此类推,如果n是m+1的整数倍,则A输,否则B输。
    代码
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<cstring>
     5 #include<algorithm>
     6 #define ll long long
     7 using namespace std;
     8 int T,n,m;
     9 int main(){
    10     cin>>T;
    11     while(T--){
    12         cin>>n>>m;
    13         if(n%(m+1)){
    14             cout<<"first
    ";
    15         }
    16         else cout<<"second
    ";
    17     }
    18     return 0;
    19 }
    View Code
     
  • 相关阅读:
    Code Review 五问五答
    JavaScript 10分钟入门
    swagger editor使用
    Tyk API网关介绍及安装说明
    Castle 多继承选择
    线程信息的获取和设置
    s3 api接口的调用
    在Hadoop集群上的HBase配置
    OpenStack 单元测试
    在Hadoop集群上的Hive配置
  • 原文地址:https://www.cnblogs.com/sz-wcc/p/10982657.html
Copyright © 2011-2022 走看看