nyoj 2359 巴什博弈?

2022-02-04 03:44:33 字數 1330 閱讀 2261

時間限制: 1 sec  記憶體限制: 30 mb

提交: 250  解決: 47

[提交][狀態][討論版]有n個石子,有兩人輪流從中取石子,最少a個最多b個,誰沒得取(即當輪到他取是已經沒有石子可以取了,也就是說此時石子數量小於a)誰贏,現在,llm先取,問你llm能贏嗎

每個測試樣例少於100000組測試資料

每組測試樣例第一行三個整數n,a,b

1<=a<=b,n<=100000000

如果llm能贏,輸出yes,否則輸出no

1 1 1

2 1 2

no

yes

河南省多校臉萌第六場

題解(非原創):

巴什博弈:只有一堆n個物品,兩個人輪流從這堆物品中取物,規定每次至少取乙個,最多取m個。最後取光者得勝。

顯然,如果n=m+1,那麼由於一次最多只能取m個,所以,無論先取者拿走多少個,後取者都能夠一次拿走剩餘的物品,後者取勝。因此我們發現了如何取勝的法則:如果

n=(m+1)r+s,(r為任意自然數,s≤m),那麼先取者要拿走s個物品,如果後取者拿走k(≤m)個,那麼先取者再拿走m+1-k個,結果剩下(m+1)(r-1)個,以後保持這樣的取法,那麼先取者肯定獲勝。總之,要保持給對手留下(m+1)的倍數,就能最後獲勝。那麼這個時候只要n%(m+1)!=0,先取者一定獲勝。

當我沒得取時輸,也就是說當剩下大於等於a個石子少於2*a個石子的時候我必然輸,其他必敗態就是這個數量再加上(a+b)*k  k為常數

舉例而言:

6 2 2

雙方取一輪,剩下2個,該我取那自然我就輸了

如果是8 2 2

我可以先取二個把問題轉化為:6 2 2的情況下對手先取,那自然他輸

這麼說吧:我們可以把給出的n分個類:

n%(a+b)

n%(a+b)<2*a

n%(a+b)>=2*a

對於第二種情況,我是必敗的這個很好推

對於第一種情況,我可以通過取乙個b變成:對面先取,狀態是n%(a+b)<2*a

對於第三種情況,我可以取個大於等於a的數量變成:對面先取,狀態是n%(a+b)==a

附ac**:

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7

using

namespace

std;89

intmain()

16return0;

17 }

view code

當時做的時候,總想著判斷條件和b也有關係,最後看了題解才知道只和a有關。

nyoj 2359 巴什博弈?(博弈 找規律)

題目描述 有n個石子,有兩人輪流從中取石子,最少a個最多b個,誰沒得取 即當輪到他取是已經沒有石子可以取了,也就是說此時石子數量小於a 誰贏,現在,llm先取,問你llm能贏嗎輸入 每個測試樣例少於100000組測試資料 每組測試樣例第一行三個整數n,a,b 1 a b,n 100000000輸出 ...

NYOJ 小博弈(巴什博奕)

題目描述 小博弈呀小博弈,從前有個小博弈,特別水呀特別水,總是特別特別水 每當唱起這首歌,yougth就想給大家來一道小博弈。now,yougth和hrdv這對 博弈搭檔又要玩遊戲了,有n個石子,每次最多可以取a個,最少可以取b個,當剩下少於b的話就要一次性取完,yougth先取,誰先面對石子為0的...

博弈 巴什博弈

只有一堆n個物品,兩個人輪流從這堆物品中取物,規定每次至少取乙個,最多取m個。最後取光者得勝。顯然,如果n m 1,那麼由於一次最多只能取m個,所以,無論先取者拿走多少個,後取者都能夠一次拿走剩餘的物品,後者取勝。因此我們發現了如何取勝的法則 如果n m 1 r s,r為任意自然數,s m 那麼先取...