有一種有趣的遊戲,玩法如下:
玩家2 人;
道具n 顆石子;
規則:1、遊戲雙方輪流取石子;
2、每人每次取走若干顆石子(最少取 11 顆,最多取 kk 顆);
3、石子取光,則遊戲結束;
4、最後取石子的一方為勝。
假如參與遊戲的玩家都非常聰明,問最後誰會獲勝?
輸入僅一行兩個整數n和k 。
【輸出】
輸出僅一行,乙個整數,若先手獲勝輸出 11,後手獲勝輸出 22。
23
3
【輸出樣例】
1
說實話,這題肥腸簡單,只要用乙個公式就ok了,也就是判斷一下石子數是不是最大可取石子數加1的倍數就行了。因為只要是倍數關係,那麼只要後手使石子數一直保持這個倍數關係他就能贏了!
**如下:
#include
using
namespace std;
intmain()
取石子遊戲系列(1)
題目來自 程式設計之美 一排石頭的遊戲 n塊石頭排成一列,每塊石頭都有自己的固定位置,也就是相當於有自己的編號一樣。兩個玩家依次取石頭,每個玩家每次可以取其中任意一塊石頭,或者相鄰的兩塊,最後將所有石頭取走的玩家贏。這個遊戲有必勝策略嗎?取石子有很多變種,限定取石子的規則,就能產生不同的玩法。這類遊...
LibreOJ 取石子遊戲 1(巴什博奕)
題目鏈結 演算法解析 我們從最簡單的情景開始分析 當石子有1 m個時,毫無疑問,先手必勝 當石子有m 1個時,先手無論拿幾個,後手都可以拿乾淨,先手必敗 我們考慮往一般情況推廣 設當前的石子數為n k m 1 r 先手會首先拿走r個,接下來假設後手拿走x個,先手會拿走m 1 x個,這樣博弈下去後手必...
取石子遊戲
如下 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個物品,兩個人輪流從這堆物品中取物,規定每...