題目描述
「小博弈呀小博弈,從前有個小博弈,特別水呀特別水,總是特別特別水」。
每當唱起這首歌,yougth就想給大家來一道小博弈。
now,yougth和hrdv這對**博弈搭檔又要玩遊戲了,有n個石子,每次最多可以取a個,最少可以取b個,當剩下少於b的話就要一次性取完,yougth先取,誰先面對石子為0的局面則贏,他們都非常聰明這是大家都知道的,現在問你誰能贏?
輸入多組資料,每組三個數n,a,b。
(0<=n<=10^120,其他均int範圍內)
輸出輸出贏了的人的名字。
樣例輸入
7 4 2
6 4 2
樣例輸出
hrdv
yougth
分析:我們可以注意到題目說當剩下少於b的話就要一次性取完,yougth先取,誰先面對石子為0的局面則贏。即誰最後取完所有石子誰輸。面對這種情況,在先手和後手都採取最優策略的情況下,最後以乙個人只能去<=b個石子。這樣的話就是乙個另類的巴士博弈。即倒數第二個取石子的人為贏家,他控制了整個局面。我們可以分析以下幾種情況:
1、當n%(a+b)<=b時,先手取c個石子,後手取d個石子,(b<=c、d<=a),且c+d=a+b.後手始終控制著局面,最後乙個取石子的人必然是先手,只能取剩下的<=b個石子,最後後手獲勝。
2、當 b因為第一次取完石子後n%(a+b)<=b,而現在輪到了後手取石子,先手控制局面,故先手必勝。
3、當 n%(a+b)=a 時,先手取c個石子(b<=c<=a),且保證 a-c<=b,此時先手依舊就變為了第一種情況控制局面的後手,因為第一次取完石子後n%(a+b)<=b,而現在輪到了後手取石子,先手控制局面,故先手必勝。
4、當 a5、當 a還有一點就是n的資料範圍是10^120,運用簡單的高精度取模即可。
#include#include#includeusing namespace std;
long long n,a,b,x;
char c[200];
int mod(string a,int b)//高精度a除以單精度b
}}
NYOJ 巴什博奕 bash game
時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 一天,tt在寢室閒著無聊,和同寢的人玩起了取石子遊戲,而由於條件有限,他 她們是用旺仔小饅頭當作石子。遊戲的規則是這樣的。設有一堆石子,數量為n 1 n 1000000 兩個人輪番取出其中的若干個,每次最多取m個 1 m 100...
博弈(巴什博奕 尼姆博弈)
1.巴什博奕 一堆 n個物品 兩人輪流從中取物品每人至少拿乙個最多拿m個將這堆物品最後取完的是winner先手勝利條件 n m 1 0 誰面對 m 1 k的情況誰就輸了 k為正整數 include int main return 0 2.尼姆博弈 三金和敵人決戰了!對手是一名和三金同樣強大帥氣的玩家...
尼姆博弈(巴什博奕)
尼姆博弈 有三堆各若干個物品,兩個人輪流從某一堆取任意多的物品,規定每次至少取乙個,多者不限,最後取光者得勝。這種情況最有意思,它與二進位制有密切關係,我們用 a,b,c 表示某種局勢,首先 0,0,0 顯然是奇異局勢,無論誰面對奇異局勢,都必然失敗。第二種奇異局勢是 0,n,n 只要與對手拿走一樣...