相傳韓信才智過(guò)人,從不直接清點(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)告無(wú)解)胜茧。已知總?cè)藬?shù)不小于10,不超過(guò)100 仇味。
輸入輸入3個(gè)非負(fù)整數(shù)a,b,c 呻顽,表示每種隊(duì)形排尾的人數(shù)(a<3,b<5,c<7)。
輸出輸出總?cè)藬?shù)的最小值(或報(bào)告無(wú)解丹墨,即輸出No answer)廊遍。實(shí)例,輸出:89
樣例輸入:
2 1 6
樣例輸出:
41
樣例輸入:
2 1 3
樣例輸出:
No Answer
方法一:枚舉法(不講)
方法二:古人法
我國(guó)古代學(xué)者早就研究過(guò)這個(gè)問(wèn)題.例如我國(guó)明朝數(shù)學(xué)家程大位在他著的《算法統(tǒng)宗》(1593年)中就用四句很通俗的口訣暗示了此題的解法:
三人同行七十稀,
五樹(shù)梅花甘一枝,
七子團(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,于是我們得到了”五樹(shù)梅花甘一枝”.
為了求出是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求出來(lái)余數(shù)是101不符合要求,故沒(méi)答案
代碼如下:
此方法可以應(yīng)用到其他數(shù)字例如4挂疆,5改览,6求出三者中的兩個(gè)數(shù)字的公倍數(shù)除以另外一個(gè)數(shù)字取余得1,然后求出三位數(shù)字的最小公倍數(shù)缤言。