程式設計開發勇敢者的遊戲解析

2022-09-23 20:00:09 字數 1156 閱讀 5273

程式設計開發勇敢者的遊戲解析。

勇敢者的遊戲(簡單博弈)

problem description:

有一部電影就叫《勇敢者的遊戲》(英文名稱:zathura),而對於我們來說,參加這場「 war of code」也是「勇敢者的遊戲」。當然,除了「勇敢」,我們還希望看到「誠信」,無論考試成績如何,希望看到的都是乙個真實的結果,也相信大家一定能做到的~

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

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:

223 2

4 3sample output:

first

second

本題思路:因為雙方採取的都是最優策略,即遊戲最開始的數量n,m已經決定了哪個玩家的輸贏。有n個石子,一次可以取最多m個,最少1個,贏的玩家必須拿到最後的石頭,那麼玩家想贏,必須把每回合取的石頭總數控制在某個數中,且這個數能被n整除。因為一次可以取最多m個,最少1個,所以每回合取的石頭總數為m+1的話,當n%(m+1)==0時,後來的玩家贏;(因為不管前面玩家怎麼取,只要後面的玩家每次取的石頭數量為(m+1-x),那麼後面的玩家一定可以取到最後的石頭)如果n%(m+1)!=0,則為前面的玩家贏(嘻嘻,這就反過來想就可以了,只要前面玩家第一次把n的數量變為n可以被(m+1)整除就可以了)

ac**:

#include

using namespace std;

int main()

{ int t;

cin>>t;

while(t--)

{int n;

int m;

cin>>n>>m;

if(n%(m+1))

cout<

勇敢者的故事

今天給大家講述的乙個勇敢者的故事,他的經歷讓人聽著都激動。他就是中國的航海家翟墨。感動中國 2009 翟墨和 大家可以不怎麼關注這個領域的,可能不太了解他。他曾經用了兩年半的時間完成了自駕帆船環球航海一周的壯舉,因此他成為了中國單人無動力帆船環球航海第一人。當時他是在拍乙個紀錄片的時候,遇到乙個老船...

遊戲開發者需要關注的遊戲ICON

開發者往往重視遊戲的名字,認為乙個好的遊戲名字能給玩家在茫茫遊戲海洋中留下深刻的印象,其實人類往往會先被吸引,然後才是文字。所以某種程度上來說,遊戲的icon反而更容易給玩家留下印象。icon色調 大家都知道現實生活中色調的不同,會給人帶來不一樣的感受。像橙色會給人帶來陽光 活潑的感受。藍色則代表著...

遊戲開發者眼中的未來開發語言

the next mainstream programming language a game developer s perspective by tim sweeny from epic games,unreal引擎開發公司 這個presentation裡作者用大量資料和例項展示了遊戲開發中目前...