愛因斯坦曾經出過這麼一個數學題:一條長長的階梯,如果每步跨2階,最後剩下一階;如果每步跨3階,最後剩下2階;如果每步跨5階,最後剩下4階;如果每步跨6階,最後剩下5階。只有每步跨7階時,才正好到頭,一階也沒有剩。請問,階梯到底有多少階?
稍加分析,就會發現,這個數學題是計算2,3,5,6的最小公倍數30的問題,階梯的階數應該比30的倍數少1,並且還是7的倍數,即30n-1=7m,找到合適的正整數n和m即可。當然,上面的分析是數學的解法,那麼用程式設計如何來解呢?
這個數學題我曾經讓小朋友程式設計來解,居然有很多種解法,真是“一千個讀者眼中就會有一千個哈姆雷特”。我們來看幾種腦回路:
腦回路1:臺階數應該是7的倍數,那麼就建立一個連結串列,把7的倍數貯存起來,然後把不滿足條件的數刪掉:
程式碼如下:
腦回路2:把滿足條件的數新增進連結串列:
結果:
腦回路3:直接找出最少的臺階數:
腦回路4:也是直接找出最少臺階數:
腦回路5: 找出一定範圍內的臺階數:
結果:
還有其他的已寫腦回路,就不一一列舉了。