Python編程算法【十九】 馬克思手稿中的數(shù)學(xué)題
【案例內(nèi)容】
馬克思手稿中有一道趣味數(shù)學(xué)問題:有30個(gè)人,其中有男人、女人和小孩,在一家飯館吃飯花了50先令;每個(gè)男人花3先令,每個(gè)女人花2先令,每個(gè)小孩花1先令;問男人、女人和小孩各有幾人?
【解題思路】
這看上去是一道典型的數(shù)學(xué)題,但借助編程算法來求解,可以很方便、快速的窮舉出所有答案。首先我們可以用數(shù)學(xué)的思路,設(shè)男人有 x 人,女人有 y 人,小孩則有 30 - (x + y) 人,再根據(jù)第二個(gè)條件——花了50先令,則可列式 3x + 2y + 30 - (x + y) = 50,進(jìn)一步整理可得?2x + y = 20,注意題目中有一個(gè)隱含的暗示,就是男人、女人或小孩至少都要有1人。因此,從式子 2x + y = 20,可知 x 的取值范圍就是1-9,那么用for循環(huán)就能快速得出男人、女人和小孩的數(shù)量。
【Python代碼】

注意,在for循環(huán)中的range的取值范圍要寫1-10,這樣才能取到1-9的數(shù)值。對(duì)于有多種求解方案的數(shù)學(xué)題,利用編程算法來解答,是再方便不過了,通過“窮舉法”(也稱枚舉法)把多種可能全部找出來,就是本題的答案了。作為擴(kuò)展,如果把人數(shù)和總錢數(shù),都用變量來代替,那么就可以變成更多不同的題目,但解題的道理都是一樣的,正所謂萬變不離其宗。
標(biāo)簽: