matrix67和shadow正在做乙個小遊戲。
桌子上放著兩堆糖果,matrix67和shadow輪流對這些糖果進行操作。在每一次操作中,操作者需要吃掉其中一堆糖果,並且把另一堆糖果分成兩堆(可以不相等)留給對方操作。遊戲如此進行下去,糖果數會越來越少,最後必將出現這樣一種情況:某人吃掉一堆糖果後發現另一堆裡只剩一塊糖果不能再分了。遊戲規定此時該操作者吃掉最後這一塊糖果從而取勝。
這個遊戲是不公平的。對於任意一種初始狀態,總有一方有必勝策略。所謂有必勝策略是指,無論對方如何操作,自己總有辦法取勝。
matrix67和shadow將進行10次遊戲,每一次遊戲中總是matrix67先進行操作。matrix67想知道每一次遊戲中誰有必勝策略。
輸入資料一共10行,每行有兩個用空格隔開的正整數,表示一次遊戲開始時桌子上兩堆糖果分別有多少個。
對於50%的資料,這些正整數均不超過100;
對於70%的資料,這些正整數均不超過10 000;
對於100%的資料,這些正整數均不超過10 000位。
輸出十行字串。這些字串只能是「matrix67」或「shadow」,它們表示對應的十行輸入資料中有必勝策略的一方。
請注意大小寫。
1 11 21 3
1 41 5
2 12 2
2 32 4
2 5
matrix67matrix67
matrix67
matrix67
matrix67
matrix67
shadow
shadow
matrix67
matrix67
各個測試點1s
matrix67原創
規定了獲勝狀態
從(x,1)開始遞推
設(x,a),吃掉x,留下的a分開,如果能分成兩部分c和d使(x,c)和(x,d)都是p狀態,(x,a)就是n狀態;如果不得不存在乙個n狀態的,(x,a)就是p狀態
遞推完1...10後》10的%10就行了
還有一種分析:(%matrix67)當遊戲狀態屬於前者時,matrix67可以把糖果數被5除餘1、4或正好除盡的那一堆分成糖果數被5除餘數都是2或3的兩堆(他總能做到這一點),而對方不得不把其中一堆糖果又分出新的糖果數被5除餘1、4或正好除盡的一堆留給matrix67操作。這樣逼著對方總是面臨必敗的狀態,使得最後對方不得不把2個糖果或者3個糖果分成兩堆,從而使matrix67贏得遊戲。反過來,當matrix67面臨兩堆糖果的數目被5除餘數都是2或3的狀態時,shadow總可以取勝。
#include #include#include
#include
using
namespace
std;
const
int n=1e4+5,inf=1e9+5
;char
a[n],b[n];
intmain()
}
vijos1196吃糖果遊戲
matrix67和shadow正在做乙個小遊戲。桌子上放著兩堆糖果,matrix67和shadow輪流對這些糖果進行操作。在每一次操作中,操作者需要吃掉其中一堆糖果,並且把另一堆糖果分成兩堆 可以不相等 留給對方操作。遊戲如此進行下去,糖果數會越來越少,最後必將出現這樣一種情況 某人吃掉一堆糖果後發...
P1196吃糖果遊戲解題報告
name p1196吃糖果遊戲 matrix67 第一次模擬賽 系列 author goal00001111 date 18 12 08 19 47 description 描述 description matrix67和shadow正在做乙個小遊戲。桌子上放著兩堆糖果,matrix67和shado...
vijos1196 吃糖果遊戲 博弈論
描述 matrix67和shadow正在做乙個小遊戲。桌子上放著兩堆糖果,matrix67和shadow輪流對這些糖果進行操作。在每一次操作中,操作者需要吃掉其中一堆糖果,並且把另一堆糖果分成兩堆 可以不相等 留給對方操作。遊戲如此進行下去,糖果數會越來越少,最後必將出現這樣一種情況 某人吃掉一堆糖...