韓信點兵問題通解
吳旻泰巖網路工作室
設士兵總數為最少為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
移項,並記m=y-x和n=z-2x
(2x+c-b)/5=y-x=m
(x+c-a)/3=z-2x=n 推得,x=3n+a-c 並將x代入上式,有
6n+2a-b-c=5m,整理並記為p=(m-n)
n+2a-b-c=5(m-n)=5p, p為整數
n=b+c-2a+5p, n>0且n<5, a<3, b<5, c<7, 且a,b,c>=0
一般設p=0,方便求出最小的n,
最小的n=b+c-2a
若n<0,則不停+5,直到n>0且n<5;如果n>5,則不停-5,直到n>0且n<5。
有,x=3n+a-c
s=7x+c
若p=0,則
x=3(b+c-2a)+a-c=3b+2c-5a
s=21b+15c-35a
s+3*5*7*n,是此問題的通解,n為》=0的整數
韓信點兵python演算法 韓信點兵演算法
秦朝末年,楚漢相爭。一次,韓信將1500名將士與楚王大將李鋒交戰。苦戰一場,楚軍不敵,敗退回營,漢軍也死傷四五百人,於是韓信整頓兵馬也返回大本營。當行至一山坡,忽有後軍來報,說有楚軍騎兵追來。只見遠方塵土飛揚,殺聲震天。漢軍本來已十分疲憊,這時隊伍大譁。韓信兵馬到坡頂,見來敵不足五百騎,便急速點兵迎...
韓信點兵演算法
孫子算經 中給出這類問題的解法 三三數之剩二,則置一百四十 五五數之剩三,置六十三 七七數之剩二,置三十 並之得二百三十三,以二百一十減之,即得。凡三三數之剩一,則置七十 五五數之剩一,則置二十一 七七數之剩一,則置十五,一百六以上,以一百五減之,即得。用現代語言說明這個解法就是 首先找出能被5與7...
Problem A 韓信點兵
劉邦問韓信 你覺得我可以帶兵多少?韓信 最多十萬。劉邦不解的問 那你呢?韓信自豪地說 越多越好,多多益善嘛!劉邦半開玩笑半認真的說 那我不是打不過你?韓信說 不,主公是駕馭將軍的人才,不是駕馭士兵的,而將士們是專門訓練士兵的.某此戰役,韓信就帶15000名士兵上戰場廝殺,不幸,戰死些許士兵,但具體數...