(C )「韓信點兵」問題的求解方法

2021-10-08 23:16:27 字數 582 閱讀 9600

有一隊士兵,確切人數不知,但若每3人一組,則餘2人;

每5人一組,餘3人;每7人一組,餘5人;每11人一組,餘4人。

請解答下列問題:

⑴至少有多少人?

⑵若已知人數在5000~10000之間,問有多少個答案?

解:初學者容易想到用逐個試探的方法來求解,

這樣顯然很耗時間,特別是在所求解的值非常大時。

如何做到這一點?

以累加前面各數的最小公倍數來試探。

由此得到求解的程式段。

#include using namespace std;

int main(int argc, char** ar**)

cout<<"所有滿足要求的數量如下:"《所有滿足要求的數量如下:

5108

6263

7418

8573

9728

--------------------------------

process exited after 0.1292 seconds with return value 0

另外可以用中國剩餘定理求解:

中國剩餘定理詳解: 

C 韓信點兵

相傳韓信才智過人,從不直接清點自己軍隊的人數,只要讓士兵先後以三人一排 五人一排 七人一排地變換隊形,而他每次只掠一眼隊伍的排尾就知道總人數了。輸入包含多組資料,每組資料報含3個非負整數a,b,c,表示每種隊形排尾的人數 a 3,b 5,c 7 輸出總人數的最小值 或報告無解 已知總人數不小於10,...

韓信點兵問題通解

韓信點兵問題通解 吳旻泰巖網路工作室 設士兵總數為最少為s,有s除以3得z餘a,s除以5得y餘b,s除以7得x餘c。即 s 7x c 5y b 3z a x,y,z,a,b,c均為 0的整數 易得,7x c b 5y 7x c a 3z 整理,x 2x c b 5 y 2x x c a 3 z 移項...

C語言 韓信點兵

題目描述 在中國數學史上,廣泛流傳著乙個 韓信點兵 的故事 韓信是漢高祖劉邦手下的大將,他英勇善戰,智謀超群,為漢朝建立了卓越的功勞。據說韓信的數學水平也非常高超,他在點兵的時候,為了知道有多少兵,同時又能保住軍事機密,便讓士兵排隊報數 按從1至5報數,記下最末乙個士兵報的數為1 再按從1至6報數,...