openjudge 取石子遊戲(遞迴)

2021-08-07 15:23:14 字數 1004 閱讀 9663

總時間限制: 

1000ms 

記憶體限制: 

65536kb

描述

有兩堆石子,兩個人輪流去取.每次取的時候,只能從較多的那堆石子裡取,並且取的數目必須是較少的那堆石子數目的整數倍.最後誰能夠把一堆石子取空誰就算贏. 

比如初始的時候兩堆石子的數目是25和7 

25 7

-->

11 7

-->

4 7-->

4 3-->

1 3-->

1 0選手1取

選手2取

選手1取

選手2取

選手1取

最後選手1(先取的)獲勝,在取的過程中選手2都只有唯一的一種取法。 

給定初始時石子的數目,如果兩個人都採取最優策略,請問先手能否獲勝。

輸入輸入包含多數資料。每組資料一行,包含兩個正整數a和b,表示初始時石子的數目。

輸入以兩個0表示結束。

輸出如果先手勝,輸出"win",否則輸出"lose"

樣例輸入

34 12

15 24

0 0

樣例輸出

win

lose

提示假設石子數目為(a,b)且a >= b,如果[a/b] >= 2則先手必勝,如果[a/b]<2,那麼先手只有唯一的一種取法.

[a/b]表示a除以b取整後的值.

tips:對於輸入的x,y兩個數。討論起所有可能性

x>=2y 先手勝

yx==y 先手勝

#includeusing namespace std;

int a,b;

bool solve(int x,int y)

int main(){

while(cin>>a>>b)

{ if(a==0&&b==0)break;

int flag=solve(a,b);

if(flag)cout<<"win"<

取石子遊戲

如下 include include intmain k b a temp floor k 1.0 sqrt 5 2.0 if temp a printf 0 n else printf 1 n return 0 一 巴什博奕 bash game 只有一堆n個物品,兩個人輪流從這堆物品中取物,規定每...

取石子遊戲

有兩堆石子,數量任意,可以不同。遊戲開始由兩個人輪流取石子。遊戲規定,每次有兩種不同的取法,一是可以在任意的一堆中取走任意多的石子 二是可以在兩堆中同時取走相同數量的石子。最後把石子全部取完者為勝者。現在給出初始的兩堆石子的數目,如果輪到你先取,假設雙方都採取最好的策略,問最後你是勝者還是敗者。in...

取石子遊戲

取石子遊戲 time limit 1000ms memory limit 10000k total submissions 25176 accepted 7961 description 有兩堆石子,數量任意,可以不同。遊戲開始由兩個人輪流取石子。遊戲規定,每次有兩種不同的取法,一是可以在任意的一堆...