韓信點(diǎn)兵

相傳韓信才智過人,從不直接清點(diǎn)自己軍隊(duì)的人數(shù),只要讓士兵先后以三人一排、五人一排、七人一排地變換隊(duì)形,而他每次只掠一眼隊(duì)伍的排尾就知道總?cè)藬?shù)了。輸入3個(gè)非負(fù)整數(shù)a,b,c ,表示每種隊(duì)形排尾的人數(shù)(a<3,b<5,c<7),輸出總?cè)藬?shù)的最小值(或報(bào)告無解)。已知總?cè)藬?shù)不小于10,不超過100 。

輸入輸入3個(gè)非負(fù)整數(shù)a,b,c ,表示每種隊(duì)形排尾的人數(shù)(a<3,b<5,c<7)。

輸出輸出總?cè)藬?shù)的最小值(或報(bào)告無解,即輸出No answer)。實(shí)例,輸出:89

樣例輸入:

2 1 6

樣例輸出:

41

樣例輸入:

2 1 3

樣例輸出:

No Answer

方法一:枚舉法(不講)

方法二:古人法

我國古代學(xué)者早就研究過這個(gè)問題.例如我國明朝數(shù)學(xué)家程大位在他著的《算法統(tǒng)宗》(1593年)中就用四句很通俗的口訣暗示了此題的解法:

三人同行七十稀,

樹梅花甘一枝,

子團(tuán)圓正半月,

除百零五便得知.

“正半月”暗指15.”除百零五”的原意是,當(dāng)所得的數(shù)比105大時(shí),就105、105地往下減,使之小于105;這相當(dāng)于用105去除,求出余數(shù).

如何有3 5 7 推斷出70 21 15,105這四位數(shù)字

為了求出是5與7的倍數(shù)而用3除余1的數(shù),我們看看5與7的最小公倍數(shù)是否合乎要求.5與7的最小公倍數(shù)是5×7=35,35除以3余2,35的2倍除以3余2,35的2倍除以3就能余1了,于是我們得到了”三人同行七十稀”.

為了求出是3與7的倍數(shù)而用5除余1的數(shù),我們看看3與7的最小公倍數(shù)是否合乎要求.3與7的最小公倍數(shù)是3×7=21,21除以5恰好余1,于是我們得到了”五樹梅花甘一枝”.

為了求出是3與5的倍數(shù)而用7除余1的數(shù),我們看看3與5的最小公倍數(shù)是否合乎要求.3與5的最小公倍數(shù)是3×5=15,15除以7恰好余1,因而我們得到了”七子團(tuán)圓正半月”.

3、5、7的最小公倍數(shù)是105,所以”除百零五便得知”.

意思是:70取余3得1

? ? ? ????????21取余5得1

????? ????????15取余7得1

用2 1 6做例子

2*70 + 1*21 + 6*15= 251

105*2 + 41 = 251

70*2取余3得2

21*1取余得1

15*6取余得6

那么不難發(fā)現(xiàn)這相當(dāng)于用105去除,求出余數(shù).,然后余數(shù)41大于10小于100,符合要求。

因此2 1 3求出來余數(shù)是101不符合要求,故沒答案

代碼如下:

此方法可以應(yīng)用到其他數(shù)字例如4,5,6求出三者中的兩個(gè)數(shù)字的公倍數(shù)除以另外一個(gè)數(shù)字取余得1,然后求出三位數(shù)字的最小公倍數(shù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容