結構化程式設計(18)


專案5-數學問題韓信點兵

一.問題描述

故事大意

“韓信點兵”。大致的故事是,楚漢爭霸,韓信率領了1500名將士和敵人交戰。大戰過後,雖然漢軍獲勝,但死傷也有近五百人,剩下的大概剛有一千人出頭,回營之後, 韓信想要清點一下剩餘的將士。只見韓信命令士兵3人站一排,最後一排多出2人;5人站一排,最後一排多出3人;命令士兵7人一排,最後多出2人。

  緊接著,韓信向將士們宣布了剩餘的漢軍人數是1073人。大家都覺得韓信點兵如此絕妙,紛紛覺得韓信是“神仙下凡”、“神機妙算”。

二.問題解析


【編程解題】根據題意,韓信的漢軍1500將士死傷四五百人,也就是還有1000人左右。因此我們用枚(窮)舉法從1500人開始逐一減少,並判斷列舉的人數是否符合列隊的情況,直到人數小於1000為止。

 

將實際問題轉換為數學問題(問題抽象化)

一個數字除以3餘2,除以5餘3,除以7餘2,請找到滿足上述要求的,大於1000的最小的數。

 

三.演算法設計(流程圖)

四.程式設計(自動化)

參考程式

解法1

解法2-用陣列資料結構

執行結果

根據題意,韓信的漢軍1500名將士在大戰之後死傷約四五百人,那麼在韓信點兵時,最接近的答案是,這支部隊可能有1073人。

參考資料:

http://www.shaoerbianchengwang.com/2860.html

https://kknews.cc/zh-tw/history/3lnm2qy.html