第十八次:結構化程式設計(10)
專案4-數學問題韓信點兵
一.問題描述
故事大意
“韓信點兵”。大致的故事是,楚漢爭霸,韓信率領了1500名將士和敵人交戰。大戰過後,雖然漢軍獲勝,但死傷也有近五百人,剩下的大概剛有一千人出頭,回營之後, 韓信想要清點一下剩餘的將士。只見韓信命令士兵3人站一排,最後一排多出2人;5人站一排,最後一排多出3人;命令士兵7人一排,最後多出2人。 緊接著,韓信向將士們宣布了剩餘的漢軍人數是1073人。大家都覺得韓信點兵如此絕妙,紛紛覺得韓信是“神仙下凡”、“神機妙算”。 |
二.問題解析
【編程解題】根據題意,韓信的漢軍1500將士死傷四五百人,也就是還有1000人左右。因此我們用枚(窮)舉法從1500人開始逐一減少,並判斷列舉的人數是否符合列隊的情況,直到人數小於1000為止。
|
將實際問題轉換為數學問題(問題抽象化)
一個數字除以3餘2,除以5餘3,除以7餘2,請找到滿足上述要求的,大於1000的最小的數。
|
三.演算法設計(流程圖)
四.程式設計(自動化)
參考程式
執行結果
根據題意,韓信的漢軍1500名將士在大戰之後死傷約四五百人,那麼在韓信點兵時,最接近的答案是,這支部隊可能有1073人。
還有其他的解法嗎嗎?
參考資料:
http://www.shaoerbianchengwang.com/2860.html
https://kknews.cc/zh-tw/history/3lnm2qy.html