1. 程式人生 > 其它 >PTA 翁愷 7-36 韓信點兵

PTA 翁愷 7-36 韓信點兵

在中國數學史上,廣泛流傳著一個“韓信點兵”的故事:韓信是漢高祖劉邦手下的大將,他英勇善戰,智謀超群,為漢朝建立了卓越的功勞。據說韓信的數學水平也非常高超,他在點兵的時候,為了知道有多少兵,同時又能保住軍事機密,便讓士兵排隊報數:

  • 按從1至5報數,記下最末一個士兵報的數為1;
  • 再按從1至6報數,記下最末一個士兵報的數為5;
  • 再按從1至7報數,記下最末一個士兵報的數為4;
  • 最後按從1至11報數,最末一個士兵報的數為10;

請編寫程式計算韓信至少有多少兵。

輸入格式:

本題無輸入

輸出格式:

輸出韓信至少擁有的士兵人數。

整體思路:

從1開始取模,同時滿足四個取模條件則輸出

整體程式碼:

#include <stdio.h>

int
main (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;