一、問題的提出
前幾天,我和幾個同學在一起玩一個非常有趣的抓牌游戲;它的游戲規則是這樣的:54張撲克牌,兩人輪換抓,一次可抓1到4張,最后一張讓誰抓到誰就輸;其中有一位同學多次勝出,可他也講不清勝出的道理。我想,有沒有保持永遠勝出的辦法呢?這其中又有什么規律嗎?是否蘊含著什么數學的奧秘?
二、分析與探究
怎樣保持永遠勝出呢?我反復多次抓牌練習、思考;
根據我們集體活動的經驗得出:在剩最后5張時,先抓的人抓走4張剩下1張就會贏;而在剩最后6張時,誰先抓誰就輸。為什么剩最后6張時誰先抓誰就輸呢?我思索良久,覺得還是應該動筆在草稿紙列出了所有的可能比較好;當紙牌有6張時,若第一個人抓1張,第二個人抓4張,剩下1張,第一個人只能抓走最后1張就輸了;若第一個人抓2張,第二個人抓3張,剩下1張,第一個人只能抓走最后1張就輸了;若第一個人抓3張,第二個人抓2張,剩下1張,第一個人只能抓走最后1張就輸了;若第一個人抓4張,第二個人抓1張,剩下1張,第一個人只能抓走最后1張就輸了。這樣四種情況一分類,我就發現第二個人贏的方法就是所抓的牌數給與第一個人湊成5張,剩下最后一張讓第一個人非抓不可。隨后我又發現剩下最后7張牌時第一個人先抓1張、最后8張牌時第一個人先抓2張、最后9張牌時第一個人先抓3張、最后10張牌時第一個人先抓4張,這樣先抓的人若再抓牌時只要與對方抓的牌數湊成5張則一定會贏;但剩下11張牌時,無論先抓的人抓幾張,只要對方所抓的牌數與先抓的人湊成5張,則先抓的人一定會輸;又發現剩下最后牌數12張時第一個人先抓1張、最后13張時第一個人先抓2張、最后14張時第一個人先抓3張、最后15張時第一個人先抓4張,這樣若再抓牌時先抓的人所抓的牌數只要與對方的牌數湊成5張則一定會贏;但剩下最后16張時,無論先抓的人抓幾張牌,只要對方所抓的牌數與先抓的人的牌數湊成5張,則先抓的人一定會輸。
這樣我就發現了一個有趣的規律,當牌數是6張、11張、16張、…時,無論先抓的人抓幾張,只要對方所抓的牌數與他的牌數湊成5張,則先抓的人一定會輸;而其它牌數先抓的人都有辦法必贏。因為54÷5=10…4,同以上的9張牌和14張牌,所以我先抓3張牌,第二次抓牌時我只要與對方所抓的牌數湊成5張,那么到最后必定只剩下1張讓對方抓走,我就可保持永遠勝出,實踐證明正確。
通過以上研究得到這樣的結論:若游戲規則是“兩人輪換抓,一次可抓1到4張,最后一張讓誰抓到誰就輸”;那么當撲克牌張數減去1的差能被5整除時,先抓的人必輸;當撲克牌張數減去1的差不能被5整除時,先抓的人必贏。
三、問題的拓展
結論的發現令我欣喜若狂,我想如果也是54張撲克牌,若改變游戲規則如:兩人輪換抓,一次可抓1到5張,最后一張讓誰抓到誰就輸;有沒有保持永遠勝出的辦法呢?
結論顯而易見,先抓的人只要先抓5張牌,無論后抓的人抓幾張,接下來先抓的人所抓的牌數只要與后抓的人的牌數湊成6張,剩下最后一張讓后抓的人抓走,就可保持永遠勝出。
那么對于這類問題有沒有其它的求解方法呢?
我豁然開朗,決定試一試倒推法。為了敘述方便,把這54張撲克牌編上號,分別為1~54號。抓撲克牌時先抓取序號小的牌,后抓序號大的牌。第一個人為了取勝,必須把54號撲克牌留給對方,因此第一個人在最后一次抓撲克牌時,必須使他自己抓到牌中序號最大的一張是53(也許他抓的撲克牌不止一張)。為了保證能做到這一點,就必須使對方最后第二次所抓的撲克牌的序號為49(=53-4)~52(=53-1)。因此,第一個人在最后第二次抓撲克牌時,必須使他自己所抓的撲克牌中序號最大的一個是48。為了保證能做到這一點,就必須使對方最后第三次所抓撲克牌的序號為44(=48-4)~47(=48-1)。因此,第一個人在最后第三次抓牌時,必須使他自己抓牌中序號最大的一個是43,…,把第一個人每次所抓的撲克牌中的最大序號倒著排列起來:53、48、43、…,觀察這一數列,發現這是一等差數列,公差d=5,且這些數被5除都余3。因此,第一個人第一次抓牌時應抓1號、2號、3號等3張牌,然后對方抓a張牌,因為a+(5-a)=5,所以為了確保第一個人從一個被5除余3的數到達下一個被5除余3的數,第一個人就應抓5-a張牌。這樣就能保證第一個人必勝。
四、問題的啟示
上面這個游戲求解過程中體驗到兩種數學思想方法,首先是從特殊到一般、簡單到復雜的歸納遞推方法,其次是采用倒推的逆向思維方法;我深深感到它們絕妙無比,這又不禁使我聯想到在課外做到的兩道有趣的習題:
1、平面上5條直線最多能把圓的內部分成幾部分?平面上100條直線最多能把圓的內部分成幾部分?
分析:如果直接畫圖解答,那么尋求問題的答案就顯得非常困難;如果是“退”到問題最簡單情況開始觀察,逐步歸納并猜想一般的遞推公式,問題就迎刃而解。
解:
假設用ak表示k條直線最多能把圓的內部分成的部分數。這里k=0,1,2,…。如圖可見。a0=1,a1=a0+1=2,a2=a1+2=4,a3=a2+3=7,a4=a3+4=11,…
歸納出遞推公式an+1=an+n。即畫第n+1條直線時,最多增加n部分。原因是這樣的:第一條直線最多把圓分成兩部分,故a1=2。當畫第二條直線時要想把圓內部分割的部分盡可能多,就應和第一條直線在圓內相交,交點把第二條直線在圓內部分分成兩條線段,而每條線段又把原來的一個區域劃分成兩個區域,因而增加的區域數是2,正好等于第二條直線的序號。同理,當畫第三條直線時,要想把圓內部分割的部分數盡可能多,它就應和前兩條直線在圓內各有一個交點,兩個交點把第三條線在圓內部分成三條線段,而每條線段又把原來一個區域劃分成兩個區域,因而增加的區域部分數是3,正好等于第三條直線的序號,…。這個道理適用于任意多條直線的情形;所以遞推公式an+1=an+n是正確的。這樣就易求得5條直線最多把圓內分成:a5=a4+5=11+5=16(部分)。
要想求出100條直線最多能把圓內分成多少區域,不能直接用上面公式了,可把上面的遞推公式變形:
∵an=an-1+n=an-2+(n-1)+n=an-3+(n-2)+(n-1)+n=…=1+1+2+3+4+…+100=1+,∴an=1+=1+=5051
2、甲、乙、丙三人各有銅錢若干枚,開始,甲把自己的銅錢拿出一部分分給了乙、丙,使乙、丙的銅錢數各增加了一倍;后來,乙也照著甲的方法做,拿出自己的一部分給甲和丙,使甲、丙的銅錢數各增加了一倍;最后,丙也照著這樣的方法做,使甲、乙的銅錢數各增加了一倍;這時三人的銅錢數都是8枚。問原來甲、乙、丙三人各有銅錢多少枚?
分析:我們往往考慮常規的方法,直接列算式或列方程解答,可是卻非常繁瑣復雜;如果能從結果出發逆向思考,利用倒推法就能輕易求的結果。
解:根據最后三人的銅錢數都是8枚,我們來列表倒推還原:
甲88÷2=44÷2=22+7+4=13
乙88÷2=44+2+8=1414÷2=7
丙88+4+4=1616÷2=88÷2=4
答:原來甲有銅錢13枚,乙有銅錢7枚,丙有銅錢4枚。
綜上兩題所述,這兩種數學思想方法無論在理論或實踐中都有廣泛的應用,具有很高的研究價值。
五、我的感想
從數學的角度對這個游戲的探究,使我獲益匪淺。抓牌游戲讓我明白:從特殊到一般、簡單到復雜的歸納遞推方法,以及采用倒推的逆向思維方法,這兩種數學思想方法是解決疑難問題的兩把金鑰匙,只要你善于思考,學會運用,許多困難都會迎刃而解。
游戲中有數學,生活中無處不存在著數學,數學就像萬花筒,充滿神奇的力量,有無窮的奧妙,我相信只要你關心她,她就能深深吸引你。