經典的搶數遊戲,即:
兩個人1開始輪流報數,每人每次可加1或2,誰先報到30,誰就勝利。
本來想自己寫的,但是發現已經有人總結出來了:經典的搶數遊戲
不過我還是把我們的思路說一下吧:
1. 基本方法
很顯然,對於每次加1或者2,最終數到30來說,可以逆推:
甲想要數到30,則必須讓乙只能數到28或29,則甲前一次應數到27;
甲想要數到27,則必須讓乙只能數到25或26,則甲前一次應數到24;
……
甲想要數到6,則必須讓乙只能數到4或5,則甲前一次應數到3;
甲想要數到3,則必須讓乙只能數到1或2,即乙先報。
很明顯,對於這題,後報數的人有必勝策略。
總結一下經驗:
必勝策略中,必須要報到3,6,9,……,24,27才能報到30。
而這些關鍵數字都是(1 + 2 =)3 的倍數。這是不是個巧合呢?
2. 演繹一下
可以試着演繹一下,每次可加1,2,3,還是要數到30,試一試:
甲想要數到30,則必須讓乙只能數到27、28或29,則甲前一次應數到26;
甲想要數到26,則必須讓乙只能數到23、24或25,則甲前一次應數到22;
……
甲想要數到6,則必須讓乙只能數到3、4或5,則甲前一次應數到2;
很明顯,對於這題,先報數的人有必勝策略。
顯然,關鍵數字是:2,6,10,……,22,26,而(1 + 3 =)4並不是這些數的因子,看來真的只是個巧合?
不不不,君且安坐,聽我一言:
仔細觀察,所有關鍵數的差都是4!
那麼,我們可以試着歸納一下:
爲了方便,稱可加的最小數字爲 s, 最大數字是 t,其和 s + t = f,最終數字是end
則爲了搶到最終的end,必勝策略就是搶先數到與end的差值爲f的倍數的那些關鍵字。
3. 推廣一下
現在有了這個歸納,可以試着推廣一下。
現在令每次可加2或3,注意,這裏可加的最小數不再是1,而是2,還是數到30:
s = 2
t = 3
f = s + t = 5
則需要搶到 25, 20, 15, 10, 5.
後數者有必勝策略。
4. 終極必殺
那麼,既然我們知道了這個策略,怎麼能迅速判斷出先數還是後數才能必勝呢?
很簡單,再總結一下:
對於可加1,2,先數到30: 30 / (1+2) = 10 餘 0, 後數必勝;
對於可加1,2,3,先數到30: 30 / (1+3) = 7 餘 2, 先數必勝;
對於可加2,3,先數到30: 30 / (2+3) = 5 餘 0, 後數必勝;
# 爲了對比,再加幾個:
對於可加1,2,3,先數到33: 27 / (1+3) = 6 餘 3, 先數必勝;
可見:
對於最終數 end 是 (s + t =)f 的整數倍的情況,後報數有必勝策略,策略就是一直佔據關鍵數,即與 end 的差值是 f 的整數倍的數字;
而對於最終數 end 不是(s + t =)f的整數倍的情況,先報數有必勝策略,策略就是先數到餘數,這樣下一次輪到自己的時候,就能佔據關鍵數,即與 end 的差值是 f 的整數倍的數字。(這樣看來,餘數其實也可以看做關鍵數。)
簡單測試一下:
oukohou: hey man, 我們來玩數字遊戲吧,每次可加2,3,4,誰先數到20誰贏;
ccslience:yeah, why not.(同時心裏暗算:2+4=6,20/6=3餘2,恩我要先數),I begin first--2;
oukohou: 5;
ccslience:8;(key number)
oukohou: 10;
ccslience:14;(key number)
oukohou: 16;
ccslience:20。Victory!
oukohou: well, you really smart……
ccslience:haha~~(同時心裏決定給這篇博客點個大大的贊~)
這樣,下次和小夥伴玩的時候,就能成竹在胸勝券在握鎮定自若地決定自己是先數還是後數啦~
5. 版權所屬
注意到開頭的時候我寫的是:
不過我還是把我們的思路說一下吧:
之所以說“我們”,這個搶數遊戲,其實是國慶出去玩的時候,和我家ccslience一起玩搶數遊戲的時候慢慢總結出來的。
真好。
hello there, ccslience.
與君相遇知何處,兩葉浮萍大海中。