【普及组模拟赛】游戏
題目描述
Atlantis Island 沉沒(méi)以前,傳說(shuō)中的貓老大和 King 是好朋友……King 很喜歡賭博,這次 King和老朋友貓老大多年不見(jiàn), 于是便邀請(qǐng)貓老大來(lái)玩一個(gè)游戲,貓老大應(yīng)邀參加了。 King 拿出了 n 塊黃金(0 < n<10^1000002), 貓老大暗自想:咋來(lái)這么多錢(qián)的??,現(xiàn)在 King 和貓老大輪流從黃金中拿走一些,每人每次拿走的塊數(shù)是 2 的次方(例如 1,2,4,8,16……)誰(shuí)能拿走最后一個(gè)黃金,誰(shuí)就獲勝。 現(xiàn)在 King 讓貓老大先拿,雙方都使用最好的策略來(lái)玩的話,誰(shuí)能取得勝利呢?現(xiàn)在請(qǐng)你來(lái)幫助貓老大,他能勝利嗎?不僅如此, King 現(xiàn)在提出要和貓老大玩三局,貓老大想知道每局他是否能獲勝,并且,你還要告訴貓老大,如果必勝的話,他第一步最少拿走的金塊數(shù)量。
輸入
三行每行一個(gè)數(shù) n(0 < n<10^1000002)。
輸出
對(duì)于每局, 如果 King 必勝則輸出一行“ King will win.”; 否則第一行輸出“ MaoLaoDa willwin.”, 第二行輸出他第一次拿的最小數(shù)量。
樣例輸入
8
4
2
樣例輸出
MaoLaoDa will win.
2
MaoLaoDa will win.
1
MaoLaoDa will win.
2
數(shù)據(jù)范圍限制
【樣例輸入 2】
3
8
2
【樣例輸出 2】
King will win.
MaoLaoDa will win.
2
MaoLaoDa will win.
2
【數(shù)據(jù)范圍】
0 < n<10^1000002
分析
通過(guò)計(jì)算可以發(fā)現(xiàn):
當(dāng)貓老大第一次拿完后,如果所剩的數(shù)為3的倍數(shù),則貓老大勝利
同理,如一開(kāi)始的數(shù)為3的倍數(shù),則貓老大失敗。
程序:
var s:ansistring; tj,i,j:longint; beginassign(input,'atlantis.in');reset(input);assign(output,'atlantis.out');rewrite(output);for i:=1 to 3 dobegintj:=0;readln(s);for j:=1 to length(s) dotj:=tj+(ord(s[j])-ord('0'));if tj mod 3=0 then writeln('King will win.') elsebeginwriteln('MaoLaoDa will win.');writeln(tj mod 3);end;end;close(input);close(output); end.轉(zhuǎn)載于:https://www.cnblogs.com/YYC-0304/p/9500008.html
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的【普及组模拟赛】游戏的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【普及组模拟赛】手机
- 下一篇: 【普及组模拟赛】家族