Python实现“韩信点兵”

Python014

Python实现“韩信点兵”,第1张

相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他没次只掠一眼队伍的排尾就知道总人数了。输入包含多组数据,每组数据包含3个非负整数a,b,c,表示每种队形排尾的人数(a<3,b<5,c<7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100。输入到文件结束为止

样例输入

2 1 6

2 1 3

样例输出

Case 1: 41

Case 2: No answer

设总人数为n,则当三人一排时有 n%3 == a, 当五人一排时有 n%5 == b,当七人一排时有 n%7 == c,因此求出同时满足上述三个条件的n即可

1、背水一战

秦朝灭亡后,项羽和刘邦又展开了一场战争,这就是历史上的楚汉相争。

刘邦手下有一员大将,名叫韩信。韩信本来是淮阴人,项梁起兵以后,路过淮阴,韩信去投奔他,在楚营里当个小兵。项梁死后,韩信又跟了项羽,项羽见他比一般兵士强,就让他做个小军官。

韩信有好几次向项羽献计策,项羽都没有采用。韩信感到十分失望。等到汉王刘邦到南郑去的时候,韩信就投奔了汉王,被刘邦拜为大将。

为了打败项羽,夺取天下,他向汉王详详细细分析了楚(项羽)汉双方的条件,认为汉王发兵东征,一定能战胜项羽。

汉王越听越高兴,只后悔没早点发现这个人才。打那以后,韩信就指挥将士,操练兵马,东征项羽的条件渐渐成熟了。

公元前205年,韩信偷袭魏王豹,灭掉魏国。10月,刘邦又派他与张耳率几万军队向东继续挺进,攻击赵国。韩信的部队要通过一道极狭的山口,叫井陉口。赵王赵歇和赵军统帅陈余立刻在井陉口聚集20万重兵,严密防守。

赵王手下的谋士李左车对大将陈余说:“韩信这次出兵,一路上打了很多胜仗,可谓是一路威风,现在他又乘胜远征,企图攻下赵国,其势锐不可挡。

不过,他们运送粮食需经过千里之遥,长途跋涉。现在我们井陉山路狭窄,车马不能并进,汉军的粮草队必定落在后面。这样你暂时给我3万人,从小道出击,拦截他们的武器粮草,断绝他们的供给,汉军不战死也会饿得半死。

你在这里坚守要塞,不与他们交战,他们前不能战,后不能退,用不了几天我们就可活捉韩信。”但大将陈余不听,仗着兵力优势,坚持要与汉军正面作战。

韩信了解到这一情况,非常高兴。他命令部队在离井陉三十里的地方安营,到了半夜,让将士们吃些点心,告诉他们打了胜仗再吃饱饭。

随后,他派出两千轻骑从小路隐蔽前进,要他们在赵军离开营地后迅速冲入赵军营地,换上汉军旗号;然后韩信又派出1万人沿着河岸背水摆开阵势。背水历来是兵家绝地,一旦背水,非死不可。陈余得知消息,大笑韩信不懂兵法,不留退路,自取灭亡。

到了天明,韩信率军发动进攻,双方展开激战。不一会,韩信、张耳假装败退,向河岸阵地靠拢。陈余则指挥赵军拼命追击。

这时,韩信命令主力部队出击,背水结阵的士兵因为没有退路,也回身猛扑敌军。这时韩信埋伏的2000轻骑兵,见赵军倾巢出击,立即飞奔驰入赵营,拔掉赵国的全部军旗,换上汉军的红旗。

赵军无法取胜,正要回营,忽然营中已插遍了汉军旗帜,于是四散奔逃。这时汉军两面夹击,赵军大败。

士兵们杀死了陈余,抓获了赵王在庆祝胜利的时候,将领们问韩信:“兵法上说,列阵可以背靠山,前面可以临水泽,现在您让我们背靠水排阵,还说打败赵军再饱饱地吃一顿,我们当时不相信,然而竟然取胜了,这是一种什么策略呢?”

韩信笑着说:“这也是兵法上有的,只是你们没有注意到罢了。兵法上不是说‘陷之死地而后生,置之亡地而后存’吗?如果是有退路的地方,士兵都逃散了,怎么能让他们拼命呢!”

这就是成语“背水一战”的来历,这个成语多用于军事行动,也可用于比喻有“决战”性质的行动,表示在没有退路的情况下与敌人决一死战。

2、拔帜易帜

韩信被刘邦拜为大将后,率领汉军攻占了魏国和代国,接着又在张耳的协助下,带了几万兵东下井陉,攻击赵国。赵王和主将陈馀在井陉口聚集了二十万大军阻挡。

谋士李左车建议陈馀拔给他三万军队,从小路出发,出其不意地截取汉军的后勤装备及粮食;而它的前军抵达井陉时不与交战。这样的话,不到十天就可以取下韩信和张耳的头颅。

陈馀是个读书人,不爱使用诈谋奇计,认为韩信的兵不过数千,经过千里行军,已非常疲惫,可以直接予以攻击,因此没有采纳李左车的计谋。

韩信手下的人探听到这个消息后,十分高兴,放心东下井陉,进军到离井陉口三十里之处,韩信下令休息。

半夜里,他选出两千名轻骑兵,让他们每人拿着一面红色旗帜,从小道来到井陉口山后隐蔽起来,同时对他们说:“我将另派一支军队与赵军对垒,并假装败退。这样,赵军必定倾巢而出,前来追击。你们乘此机会快速进入赵营,拔掉赵军的旗帜,换上我们汉军红色的旗帜。”

接着,韩信又派出一支一万人的军队,叫他们背水摆开阵势。赵军见汉军排出兵法上最讳忌的背水之阵,都哈哈大笑,以为汉军自己断了后路。

天刚亮,韩信指挥这一万人的军队向井陉口进发,赵军立即打开营门迎击。战了一段时间后,韩信、张耳命汉兵丢掉旗鼓,向水边退去。汉兵退到水边阵地,再也无法后退,只得拼死作战。

这时,隐蔽在山后的两千汉兵,趁赵营无人守卫,快速冲进赵营,飞快地拔掉赵军旗帜,换上汉军红色的旗帜。

而在水边作战的赵兵,因遇到背水一战的汉兵的顽强抵抗,无法取胜,想返回营地,却见那里全是汉军的红旗,以为赵王已被汉兵抓住,顿时军心大乱,各自逃命。接着,汉军两面夹击赵军,结果主将陈馀被杀,赵王被活捉。

3、多多益善

刘邦称帝后,韩信被刘邦封为楚王,不久,刘邦接到密告,说韩信接纳了项羽的旧部钟离昧,准备谋反。于是,他采用谋士陈平的计策,假称自己准备巡游云梦泽,要诸侯前往陈地相会。

韩信知道后,杀了钟离昧来到陈地见刘邦,刘邦便下令将韩信逮捕。押回洛阳。回到洛阳后,刘邦知道韩信并没谋反的事,又想起他过去的战功,便把他贬为淮阴侯。

韩信心中十分不满;但也无可奈何。刘邦知道韩信的心思,有一天把韩信召进宫中闲谈,要他评论 一下朝中各个将领的才能,韩信一一说了。

当然,那些人都不在韩信 的眼中。刘邦听了,便笑着问他:“依你看来,像我能带多少人马?”“陛下能带十万。”韩信回答。 刘邦又问:“那你呢?”“对我来说,当然越多越好!”

刘邦笑着说:“你带兵多多益善,怎么会被我逮住呢?” 韩信知道自己说错了话,忙掩饰说:“陛下虽然带兵不多,但有驾驭将领的能力啊!” 刘邦见韩信降为淮阴侯后仍这么狂妄,心中很不高兴。

后来,刘邦再次出征,刘邦的妻子吕后终于设计杀害了韩信。

4、胯下之辱

在淮阴有一群恶少当众羞辱韩信。有一个屠夫对韩信说:“你虽然长得又高又大,喜欢带着剑,其实你胆子小得很!有本事的话,你敢用你的佩剑来刺我吗?如果不敢,就从我的裤裆下钻过去。”

韩信自知形单影只。于是,他便当着许多围观人的面,从那个屠夫的裤裆下钻了过去。在场的人都嘲笑韩信,认为他很胆小。史书上称“胯下之辱”。

5、韩信木罂渡黄河

魏王豹是秦亡之后项羽封王时所立,以平阳(今山西临汾市西南金殿)为都城,管辖河东郡。刘邦还定三秦之后,自临晋(今陕西大荔县朝邑镇东南)渡黄河向东扩展,魏王豹顺应大势,不战而降,归顺汉王,并带兵随汉王东进讨伐项羽。

后来,汉王东征受挫,魏王豹托词亲属有病要回去探视,便离开汉王。回魏之后,他立刻关闭黄河东岸渡口,断绝与汉的来往,重新投向楚霸王。

刘邦看到魏王豹所控制的地区十分重要,从魏国西进可以威胁关中,南下可以截断汉军粮道,与楚军形成对汉军的夹击之势。

为了解除这一威胁,刘邦先派郦食其前去劝说魏王豹归顺汉王,并许诺封以万户之邑,却遭到魏王豹的断然拒绝。刘邦见劝说无效,准备向魏王豹发兵,便向郦食其了解魏将领的情况。

刘邦问:“魏大将是谁?”郦食其回答:“是柏直。”刘邦说:“乳臭未干的毛头小子。怎么能抵挡韩信!”又问:“骑兵将领是谁?”回答:“冯敬。”刘邦说:“是秦将冯无择之子,虽然贤能,也不能抵挡灌婴。”

又问:“步兵将领是谁?”回答:“项它。”刘邦说:“不能抵挡曹参。我没有什么可担心的了!”于是,任用韩信为左丞相,与灌婴、曹参一起伐魏。

韩信在出兵之前,也找来郦食其了解魏将领情况。他听说魏王豹不用有战斗经验的周叔为大将,却用没有经验的柏直,心里就有了对敌之策。他分析魏必然凭借黄河天险,扼守黄河主要渡口,采取固守的战略,进行持久作战。

所以,他审时度势,针锋相对地制定了速战速决的战略,决定用奇袭的战术一举击破魏军的防线。汉高祖二年(前205)八月,韩信率军从关中出发,兵临黄河岸边。

魏王豹闻讯,把重兵调集到蒲坂(今山西永济西蒲州镇),封锁了黄河渡口临晋关。韩信来到临晋关,派人一侦察,对岸全是魏兵,只有上游夏阳(在陕西韩城南)地方魏兵不多。

于是就决定在夏阳渡河。渡河需要木船,但他们只有100 多只,不够用。韩信就派人砍伐木材,并去收买小口大肚子的瓶子(古时候叫罂)。

灌婴和曹参为明白韩信买罂的用意,请他解释。韩信说:“把几十只口小肚大的瓶子封住口,排成长方形,口朝下,底朝上,用绳子绑在一起,再用木头夹住,叫作‘木罂’,用它做成筏子可以比一般筏子多载人啊。”

灌婴和曹参好不佩服,就各自去忙着伐木购瓶了。几天功夫,一一准备齐全。

这一天,韩信命令灌婴带领一万兵马和100 多只船,在临晋关黄河的对岸排开阵势,假装要渡河的样子。魏王豹率领重兵虎视眈眈,严阵以待。谁料想,韩信仰曹参却偷偷地带领大军连夜把木罂运到了夏阳。

魏王豹等了几天。并不见临晋关对岸发兵,以为汉军一时不敢渡河。正在这时,安邑守军来报,韩信已攻下安邑,向平阳方向杀将过来。

魏王大惊:上游的夏阳向来没有船只,难道汉军是飞过河的?仓促之间领兵去阻挡,但是以木罂渡河的汉军在安邑得手后,士气更旺,一路势如破竹,魏军哪里抵抗得住?

魏王豹正想往临晋关退去,灌婴的兵马却趁临晋关空虚之机,挥师渡过河来攻占了关口,也向平阳冲来。两路夹击,腹背受敌的魏王豹只得下马投降。韩信很快平定了魏地。

魏王豹闻讯大惊,急忙回师救援,但军心已经大乱,难敌汉军的冲击,全军遭重创后被迫向东退却,韩信率领汉军乘胜追击。

九月,汉军在东垣(治所在今山西垣曲县东南)俘虏了魏王豹,韩信兵不血刃进入魏都平阳。随后,韩信又分兵平定了河东52县,在黄河以东置河东郡。

韩信木罂渡军克魏王豹后,消除了魏对关中和黄河以南地区的威胁,取得了汉军开辟北方战场的第一个胜利,对减轻刘邦主力在中原战场作战的压力起了十分重要的作用。同时,也创造了中国古代战争史上声东击西、出奇制胜的著名战例。

参考资料来源:百度百科——胯下之辱

参考资料来源:百度百科——背水一战

参考资料来源:百度百科——多多益善

参考资料来源:百度百科——韩信木罂渡黄河

参考资料来源:百度百科——拔帜易帜