NYOJ 小博弈(巴什博奕)

2021-09-11 10:21:30 字數 1072 閱讀 3793

題目描述

「小博弈呀小博弈,從前有個小博弈,特別水呀特別水,總是特別特別水」。

每當唱起這首歌,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 只要與對手拿走一樣...