天天看點

HDU 1846解題報告 Brave Game

Brave Game

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 7488    Accepted Submission(s): 4976

Problem Description 十年前讀大學的時候,中國每年都要從國外引進一些電影大片,其中有一部電影就叫《勇敢者的遊戲》(英文名稱:Zathura),一直到現在,我依然對于電影中的部分電腦特技印象深刻。

今天,大家選擇上機考試,就是一種勇敢(brave)的選擇;這個短學期,我們講的是博弈(game)專題;是以,大家現在玩的也是“勇敢者的遊戲”,這也是我命名這個題目的原因。

當然,除了“勇敢”,我還希望看到“誠信”,無論考試成績如何,希望看到的都是一個真實的結果,我也相信大家一定能做到的~

各位勇敢者要玩的第一個遊戲是什麼呢?很簡單,它是這樣定義的:

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
        

Author lcy  

Source ACM Short Term Exam_2007/12/13  

Recommend lcy   |   We have carefully selected several similar problems for you:   1847  1848  2147  1849  2149 

           簡單的博弈入門,巴什博弈。

                參考代碼:

#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<string>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<queue>
#include<ctime>
#include<cstdlib>
#include<iomanip>
#include<utility>
#define pb push_back
#define mp make_pair
#define CLR(x) memset(x,0,sizeof(x))
#define _CLR(x) memset(x,-1,sizeof(x))
#define REP(i,n) for(int i=0;i<n;i++)
#define Debug(x) cout<<#x<<"="<<x<<" "<<endl
#define REP(i,l,r) for(int i=l;i<=r;i++)
#define rep(i,l,r) for(int i=l;i<r;i++)
#define RREP(i,l,r) for(int i=l;i>=r;i--)
#define rrep(i,l,r) for(int i=1;i>r;i--)
#define read(x) scanf("%d",&x)
#define put(x) printf("%d\n",x)
#define ll long long
#define lson l,m,rt<<1
#define rson m+1,r,rt<<11
using namespace std;

int main()
{
   int t,n,m;
   read(t);
   while(t--)
   {
       scanf("%d%d",&n,&m);
       if(n<=m) printf("first\n");
       else if(n%(m+1)) printf("first\n");
       else printf("second\n");
   }
}