邂逅明下 博弈 SG打表找規律)

2021-08-19 00:20:22 字數 1612 閱讀 4110

當日遇到月,於是有了明。當我遇到了你,便成了侶。

那天,日月相會,我見到了你。而且,大地失去了光輝,你我是否成侶?這注定是個淒美的故事。(以上是廢話)

小t和所有世俗的人們一樣,期待那百年難遇的日食。駐足街頭看天,看日月漸漸走近,小t的脖子那個酸呀(他堅持這個姿勢已經有半個多小時啦)。他低下仰起的頭,環顧四周。忽然發現身邊竟站著位漂亮的mm。天漸漸暗下,這mm在這街頭竟然如此耀眼,她是天使嗎?站著小t身邊的天使。

小t對mm驚呼:「緣分吶~~」。mm卻毫不含糊:「是啊,500年一遇哦!」(此後省略5000字….)

小t趕緊向mm要****,可mm說:「我和你玩個遊戲吧,贏了,我就把我的手機號告訴你。」小t,心想天下哪有題目能難倒我呢,便滿口答應下來。mm開始說遊戲規則:「我有一堆硬幣,一共7枚,從這個硬幣堆裡取硬幣,一次最少取2枚,最多4枚,如果剩下少於2枚就要一次取完。我和你輪流取,直到堆裡的硬幣取完,最後一次取硬幣的算輸。我玩過這個遊戲好多次了,就讓讓你,讓你先取吧~」

小t掐指一算,不對呀,這是不可能的任務麼。小t露出得意的笑:「還是mm優先啦,呵呵~」mm霎時愣住了,想是對小t的反應出乎意料吧。

她卻也不生氣:「好小子,挺聰明呢,要不這樣吧,你把我的郵箱給我,我給你發個文字,每行有三個數字n,p,q,表示一堆硬幣一共有n枚,從這個硬幣堆裡取硬幣,一次最少取p枚,最多q枚,如果剩下少於p枚就要一次取完。兩人輪流取,直到堆裡的硬幣取完,最後一次取硬幣的算輸。對於每一行的三個數字,給出先取的人是否有必勝策略,如果有回答win,否則回答lost。你把對應的答案發給我,如果你能在今天晚上8點以前發給我正確答案,或許我們明天下午可以再見。」

小t二話沒說,將自己的郵箱給了mm。當他興沖沖得趕回家,上網看郵箱,哇!mm的郵件已經到了。他發現文字長達100000行,每行的三個數字都很大,但是都是不超過65536的整數。小t看錶已經下午6點了,要想手工算出所有結果,看來是不可能了。你能幫幫他,讓他再見到那個mm嗎?

input

不超過100000行,每行三個正整數n,p,q。

output

對應每行輸入,按前面介紹的遊戲規則,判斷先取者是否有必勝策略。輸出win或者lost。

sample input

7 2 46 2 4

sample output

lost

win通過sg打表可以很快看出規律 , 在1~p之間時為必勝狀態 , p~q時為必敗狀態,之後也不斷重複 , 故取餘即可。

下面**:

1,sg打表的**:

const int maxn = 1000;

int sg[maxn] , hush[maxn];

void getsg(int n , int p , int q)

for(int j = 0 ; ; j++)

}} for(int i = 0 ; i <= n ; i++)

for(int j = 0 ; ; j++)

}} for(int i = 0 ; i <= n ; i++)

else

}return 0;

}

或者這樣:
int main()

else

}return 0;

}

博弈 Bash遊戲 V3(SG 打表找規律)

有一堆石子共有n個。a b兩個人輪流拿,a先拿。每次拿的數量只能是2的正整數次冪,比如 1,2,4,8,16 拿到最後1顆石子的人獲勝。假設a b都非常聰明,拿石子的過程中不會出現失誤。給出n,問最後誰能贏得比賽。例如n 3。a只能拿1顆或2顆,所以b可以拿到最後1顆石子。輸入的n可能為大數 第1行...

打表找規律

題解 此題資料規模較大,如果運用直接暴力方法顯然不可行。對於公式 f n a f n 1 b f n 2 後者只有7 7 49 種可能,為什麼這麼說,因為對於f n 1 或者 f n 2 的取值只有 0,1,2,3,4,5,6 這7個數,a,b又是固定的,所以就只有49種可能值了。由該關係式得知每一...

A Funny Game 打表 找規律

n枚硬幣排成乙個圈。alice和bob輪流從中取一枚或兩枚硬幣。不過,取兩枚時,所取的兩枚硬幣必須是連續的。硬幣取走之後留下空格,相隔空格的硬幣視為不連續。alice開始先取,取走最後一枚硬幣的獲勝。當雙方都採取最有策略時,誰會獲勝?不管,先爆搜找規律。includeusing namespace ...