PTA 翁愷 7-36 韓信點兵
阿新 • • 發佈:2021-10-19
在中國數學史上,廣泛流傳著一個“韓信點兵”的故事:韓信是漢高祖劉邦手下的大將,他英勇善戰,智謀超群,為漢朝建立了卓越的功勞。據說韓信的數學水平也非常高超,他在點兵的時候,為了知道有多少兵,同時又能保住軍事機密,便讓士兵排隊報數:
- 按從1至5報數,記下最末一個士兵報的數為1;
- 再按從1至6報數,記下最末一個士兵報的數為5;
- 再按從1至7報數,記下最末一個士兵報的數為4;
- 最後按從1至11報數,最末一個士兵報的數為10;
請編寫程式計算韓信至少有多少兵。
輸入格式:
本題無輸入
輸出格式:
輸出韓信至少擁有的士兵人數。
整體思路:
從1開始取模,同時滿足四個取模條件則輸出
整體程式碼:
#include <stdio.h> intmain (void){ int people = 0,d = 1; while (d) { d = 4; people++; if(people % 5 == 1) d--; if(people % 6 == 5) d--; if(people % 7 == 4) d--; if(people %11 == 10) d--; } printf ("%d",people);return 0; }
討論:
- 用d來判斷是否滿足條件,d=4,每滿足一個則d-1,注意每次迴圈時d要恢復到4;
- people++ 一定要在 四個判斷之前,先加再判斷,否則最後會多出1;