題目:
描述
yougth和hrdv這對**博弈搭檔又要玩遊戲了,有n個石子,每次最多可以取a個,最少可以取b個,當剩下少於b的話就要一次性取完,yougth先取,誰先面對石子為0的局面則贏,他們都非常聰明這是大家都知道的,現在問你誰能贏?
輸入多組資料,每組三個數n,a,b。
(0<=n<=10^120,其他均int範圍內)
輸出輸出贏了的人的名字。
樣例輸入
7 4 2樣例輸出6 4 2
hrdvyougth
分析:
博弈有如下原則:
1. 如果乙個狀態可以有一種方式轉化為必敗態(交給對手一種必敗局面),那麼該狀態為:必勝態
2. 如果乙個狀態的所有轉移狀態皆為必勝態(即無論如何對手拿到的都是必勝的局面),那麼改狀態為:必敗態
根據上面的準則進行遞推,可得:
n勝負狀態(必勝態:1, 必敗態:0)01
[1, b]
0[b+1, a+b]
1[a+b+1, a+2b]
0[a+2b+1, 2a+2b]
1...
...
我們會發現:[k(a+b)+1, k(a+b)+b] 均為必敗態, 即n%(a+b)落在[1, b]區間的都為必敗態
#include #include#include
#include
using
namespace
std;
char n[130
];typedef
long
long
ll;
ll f(
char* s, int
len, ll mod)
return
ret;
}int
main ()
return0;
}
Large Division 大整數取模
given two integers,aandb,you should check whetherais divisible bybor not.we know that an integerais divisible by an integerbif and only if there exist...
大整數的加減乘除取模
include include using namespace std inline int compare string str1,string str2 高精度加法 string add int string str1,string str2 else else else int int1 0,...
nyoj205求餘數(大整數求模)
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 現在給你乙個自然數n,它的位數小於等於一百萬,現在你要做的就是求出這個數除10003之後的餘數 輸入 第一行有乙個整數m 1 m 8 表示有m組測試資料 隨後m行每行有乙個自然數n。輸出輸出n整除10003之後的餘數,每次輸出佔...