歡樂鬥地主
時限:1s
記憶體限制:128mb
題目描述:
ning_mew 最近有玩歡樂鬥地主(不能歧視我菜),腦子再次一熱,就改成了一道很水很水的題。
小 mew 和朋友小 ning 一起玩遊戲,兩個人輪流取紙牌,告訴你一共有 n 張紙牌,每次可以取 1~m 張,每
次小 mew 都可以先手(誰要他巨呢),假設兩個人都是高智商,都只會去取最有可能贏的數量的牌。所以呢想要
問你,小 mew 第一次要取多少張牌才能穩贏~實在穩贏不了,就輸出「she pi guai wu!」(不包括引號)
贏的定義就是取最後一張。_(:3 / )_
讀入格式:
第一行:q(表示讀入 q 行 n 與 m)----->多測
第二至 q+1 行:每行讀入 n,m
輸出格式:
第一至 q 行:每行,如果能穩贏,輸出第一次取的紙牌數量;否則,輸出「she pi guai wu!」(不包括引號)。
樣例輸入:142
樣例輸出:
1樣例解釋:
這還要解釋?
資料範圍:
10%: q<=10
n,m<=100
40%: q<=100
n,m<=1000
60%: q<=1000
n,m<=10000
80%: q<=10000
n,m<=10000
100%: q<=100000 n,m<=1000000
solution:
本題考察數學,實際上是小學奧數的推廣。大家應該都還記得小學奧數中經典的分紙牌的遊戲吧,就是給出54張牌,一次能拿1到4張牌,問先手第一次拿幾張牌能贏。。。答案是先手拿4張牌,這樣剩下50張牌,無論對手拿x張,我拿5-x張,最後一張牌一定是先手拿到。。
。推及到本題,有n張牌,每次最多拿m張,那麼若n%(m+1)==0,則先手必輸(因為無論先手拿x張,後手都能拿到m+1-x張),若n%(m+1)!=0,則先手必贏,策略是先拿n%(m+1)張牌。
**:
1/*小學奧數中的分紙牌問題,開始還以為是nim遊戲,打了個dp但資料呵呵——by 520
*/2 #include3
#define il inline
4#define ll long long
5using
namespace
std;
6int
n,m,q;
7 il int
gi()815
intmain()
1625
return0;
26 }
2023年2月15日 考試
一如既往的菜。關鍵是轉換的方法 include using namespace std typedef long long ll struct sh bool operator const sh a,const sh b priority queue q int n ll x,y,z x是原數,z暫...
4月2日Debug日記
於是開始找影象的顯示,先被師妹指出沒加waitkey,加上後發現除了srcimage其他還是不能顯示,從參與goodfeaturetotrack的frame1開始,不能顯示,它是由last frame賦給他的,那就顯示last frame,也不顯示。我之前的處理思路是開闢乙個last frame用於...
4月2日BFC布局
說明 label元素用來定義標籤,為頁面上的其他元素指定提示資訊。要將label元素繫結到其他的控制項上,可以將label元素的for屬性設定為與該控制項的id屬性值相同。表單補充 1 單選按鈕組 男 預設選中 女 2 核取方塊組 disabled disabled 禁用 checked check...