【普及组模拟赛】游戏
題目描述
Atlantis Island 沉沒以前,傳說中的貓老大和 King 是好朋友……King 很喜歡賭博,這次 King和老朋友貓老大多年不見, 于是便邀請貓老大來玩一個游戲,貓老大應邀參加了。 King 拿出了 n 塊黃金(0 < n<10^1000002), 貓老大暗自想:咋來這么多錢的??,現在 King 和貓老大輪流從黃金中拿走一些,每人每次拿走的塊數是 2 的次方(例如 1,2,4,8,16……)誰能拿走最后一個黃金,誰就獲勝。 現在 King 讓貓老大先拿,雙方都使用最好的策略來玩的話,誰能取得勝利呢?現在請你來幫助貓老大,他能勝利嗎?不僅如此, King 現在提出要和貓老大玩三局,貓老大想知道每局他是否能獲勝,并且,你還要告訴貓老大,如果必勝的話,他第一步最少拿走的金塊數量。
輸入
三行每行一個數 n(0 < n<10^1000002)。
輸出
對于每局, 如果 King 必勝則輸出一行“ King will win.”; 否則第一行輸出“ MaoLaoDa willwin.”, 第二行輸出他第一次拿的最小數量。
樣例輸入
8
4
2
樣例輸出
MaoLaoDa will win.
2
MaoLaoDa will win.
1
MaoLaoDa will win.
2
數據范圍限制
【樣例輸入 2】
3
8
2
【樣例輸出 2】
King will win.
MaoLaoDa will win.
2
MaoLaoDa will win.
2
【數據范圍】
0 < n<10^1000002
分析
通過計算可以發現:
當貓老大第一次拿完后,如果所剩的數為3的倍數,則貓老大勝利
同理,如一開始的數為3的倍數,則貓老大失敗。
程序:
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.轉載于:https://www.cnblogs.com/YYC-0304/p/9500008.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的【普及组模拟赛】游戏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【普及组模拟赛】手机
- 下一篇: 【普及组模拟赛】家族