【讀書筆記】趣味數(shù)學(xué)及編程拓展(第2版) 第4章
第4章 方程經(jīng)典匯趣
解方程(不等式)是數(shù)學(xué)的基本課題之一,許多實(shí)際應(yīng)用問(wèn)題的求解往往歸結(jié)為解某一方程(不等式)或方程組來(lái)完成。
4.1 韓信點(diǎn)兵
韓信點(diǎn)兵的故事,讓士兵排隊(duì)報(bào)數(shù),按從1-5報(bào)數(shù),記下最末一個(gè)士兵報(bào)的數(shù)為1;再按從1-6報(bào)數(shù),記下最末一個(gè)士兵報(bào)的數(shù)為5;按從1-7報(bào)數(shù),記下最末一個(gè)士兵報(bào)的數(shù)為4;最后,按從1-11報(bào)數(shù),記下最末一個(gè)士兵報(bào)的數(shù)為10,問(wèn)韓信的排隊(duì)中有多少士兵。
韓信點(diǎn)兵的版本有很多。它形成了一類問(wèn)題,也就是初等數(shù)論中的解同余式。
【編程題】
n遍報(bào)數(shù),第i遍從1-p(i)報(bào)數(shù)時(shí),最末一個(gè)士兵報(bào)數(shù)為r(i),這里i=1,2,...,n
從鍵盤輸入n及各個(gè)p(i)與r(i),計(jì)算并輸出滿足這報(bào)n遍數(shù)的3個(gè)最少人數(shù)。
4.2 古代趣算
4.2.1 百雞問(wèn)題
百雞問(wèn)題是一個(gè)數(shù)學(xué)問(wèn)題,出自中國(guó)古代約5—6世紀(jì)成書的《張丘建算經(jīng)》,是原書卷下第38題,也是全書的最后一題,該問(wèn)題導(dǎo)致三元不定方程組,其重要之處在于開創(chuàng)“一問(wèn)多答”的先例。
?
百雞問(wèn)題:今有雞翁一,值錢伍;雞母一,值錢三;雞雛三,值錢一。凡百錢買雞百只,問(wèn)雞翁、雞母、雞雛各幾何?
這個(gè)問(wèn)題可列如下方程
x+y+z =100
5x+3y+(1/3)z =100
以上有兩個(gè)方程,三個(gè)未知量,稱為不定方程組,有多種解。
采用加減消元法,消去一個(gè)變量,可得另外兩個(gè)變量的關(guān)系式,再探測(cè)判定解。
【編程題】
用100個(gè)錢買100只雞,其中公雞5個(gè)錢1只,母雞3個(gè)錢1只,而小雞1個(gè)錢買d只,整數(shù)d從鍵盤輸入,問(wèn)公雞母雞與小雞各買了多少只?
?
4.2.2 羊犬雞兔問(wèn)題
今有五羊四犬三雞二兔值錢一千四百九十六,四羊二犬六雞三兔值錢一千一百七十五,三羊一犬七雞五兔值錢九百五十八,二羊三犬五雞一兔值錢八百六十一。求每只羊、犬、雞、兔各值多少錢?
這是多元線性方程組。可以用加減消元法。
【編程題】
用枚舉法(窮舉法)求羊犬雞兔問(wèn)題
?
4.3 國(guó)外趣算
?
4.3.1 牛頓“牛吃草問(wèn)題”
牛頓在他的《普通算術(shù)》一書中,有一道關(guān)于牛在牧場(chǎng)上吃草的問(wèn)題,即牛在牧場(chǎng)上吃草,牧場(chǎng)上的草在不斷地、均勻地生長(zhǎng)。后人把這類問(wèn)題稱為牛吃草問(wèn)題或叫做“牛頓問(wèn)題”。
牧場(chǎng)上有一片青草,每天都生長(zhǎng)得一樣快。這片青草供給27頭牛吃,可以吃6天;或者供給23頭牛吃,可以吃9天,其間草一直在生長(zhǎng)。如果這些草供給21頭牛吃,可以吃多少天?
這是一個(gè)多元方程組求解問(wèn)題。
【編程題】
把牛頓“牛吃草問(wèn)題”中的5個(gè)整數(shù)由系統(tǒng)隨機(jī)產(chǎn)生,由游戲者提供答案,主持給出評(píng)判,如果參賽者答案錯(cuò)誤,則給出正確解答。
?
4.3.2 100!結(jié)尾多少個(gè)0
這是一個(gè)階乘計(jì)算問(wèn)題。
試確定100!的結(jié)尾有幾個(gè)0.
這個(gè)問(wèn)題可轉(zhuǎn)換為統(tǒng)計(jì)5因數(shù)的個(gè)數(shù)。具體推導(dǎo)可以看書或百度
【編程題】
對(duì)于指定的正整數(shù)n,試確定階乘n!的結(jié)尾0的個(gè)數(shù)。
對(duì)于指定的正整數(shù)m,試確定k!的結(jié)尾至少有m個(gè)0的整數(shù)k的最小值。
?
4.4 加減得1游戲
主持人給出兩個(gè)整數(shù),至少加減運(yùn)算多少次能得到1?
如16,9
16+16+16+16-9-9-9-9-9-9-9=1
9+9+9+9+9+9+9+9+9-16-16-16-16-16=1
這個(gè)問(wèn)題可以轉(zhuǎn)為不定方程 16X -9Y = ±1
【編程題】
輸入不同的兩個(gè)正整數(shù)a,b(1<b<a),輸出得到1的最少運(yùn)算次數(shù)及運(yùn)算式。如果無(wú)法得到,則予以說(shuō)明。
?
4.5 多元不定方程組
?
4.5.1 雙和不定方程組
問(wèn)題:給定下面的方程組
?X + Y + Z = 90
?1/X + 1/Y + 1/Z = 1/6
試求整數(shù)X,Y,Z。(約定X<Y<Z)
?
【編程題】
已知n是一個(gè)正整數(shù)(n≤100),求解基于n的不定方程組
?a + b + c = d + e + f = n
?1/a + 1/b + 1/c = 1/d + 1/e + 1/f
從鍵盤輸入正整數(shù)n,求出方程組的所有正整數(shù)解(約定a<b<c,d<e<f,a<d)
?
4.5.2 和積不定方程組
問(wèn)題:給定下面的方程組
?X + Y + Z = 100
?XYZ = 28080
試求整數(shù)X,Y,Z。(約定X<Y<Z)
【編程題】
已知n是一個(gè)正整數(shù)(n≤150),求解基于n的不定方程組
?a + b + c = d + e + f = g + h + i = n
?abc = def = ghi
從鍵盤輸入正整數(shù)n,求出方程組的所有正整數(shù)解(約定a<b<c,d<e<f,g<h<i,a<d)
?
?
4.6 解不等式
某些涉及整數(shù)的不等式求解用通常推理的方法是無(wú)法完成的,這就為應(yīng)用程序涉及解這些不等式提供了空間。
?
4.6.1 調(diào)和數(shù)列不等式
【編程題】
對(duì)指定的正數(shù)x, y(2<x<y),試求滿足調(diào)和數(shù)列不等式的正整數(shù)n。
x < 1+ 1/2 + 1/3 + ┉?+ 1/n < y
輸入正整數(shù)x,y,輸出正整數(shù)n的取值范圍。
?
4.6.2 代數(shù)和不等式
【編程題】
試解下列關(guān)于正整數(shù)n的代數(shù)和不等式
1 + 1/sqrt(2) - 1/sqrt(3) + 1/sqrt(4) + 1/sqrt(5) - 1/sqrt(6) + ┉ ± 1/sqrt(n) > d
(表達(dá)式中符號(hào)為兩個(gè)加號(hào)后一個(gè)減號(hào))
從鍵盤輸入正數(shù)d(d>1),輸出正整數(shù)n的值。
?
4.7 和與積的整數(shù)部分
?
4.7.1 平方根的兩個(gè)和
【編程題】
試求區(qū)間[c, d]上整數(shù)的平方根和S1和平方根倒數(shù)和S2的整數(shù)部分
S1 = sqrt(c) + sqrt(c+1) + sqrt(c+2) + ┉?+ sqrt(d)
S2 = 1/sqrt(c) + 1/sqrt(c+1) + 1/sqrt(c+2) + ┉?+ 1/sqrt(d)
?
4.7.2 分?jǐn)?shù)連乘積
【編程題】
給定區(qū)間[c, d],探求分?jǐn)?shù)連乘積的整數(shù)部分
T = ( (2c)(2c+2)┉(2d) ) / ( (2c-1)(2c+1)┉(2d-1) )
(式中,分子全為偶數(shù),分母全為奇數(shù),各個(gè)分子比相應(yīng)分母多1)
?
4.8 猴子分桃與水手分椰子
?
4.8.1 猴子分桃
猴子分桃:海灘上有一堆桃子,五只猴子來(lái)分。第一只猴子把這堆桃子平均分為五份,多了一個(gè),這只猴子把多的一個(gè)扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一個(gè),它同樣把多的一個(gè)扔入海中,拿走了一份。第三、第四、第五只猴子都是這樣做的,問(wèn)海灘上原來(lái)最少有多少個(gè)桃子?
求解可以百度
【編程題】
海灘上有一堆桃子,n只猴子來(lái)分。第一只猴子把這堆桃子平均分為n份,多了一個(gè),這只猴子把多的一個(gè)扔入海中,拿走了一份。第二只猴子到第n只猴子都遇到同樣的情況,并同樣處理,都是扔掉一個(gè)桃子后,恰好可以分成n等份。
輸入猴子數(shù)n(1<n<9),輸出這堆桃子至少有多少個(gè),并逐次輸出分桃數(shù)量。
?
4.8.2 水手分椰子
五個(gè)水手來(lái)到一個(gè)島上,采了一堆椰子后,因?yàn)槠诙妓?。一段時(shí)間后,第一個(gè)水手醒來(lái),悄悄地將椰子等分成五份,多出一個(gè)椰子,便給了旁邊的猴子,然后自己藏起一份,再將剩下的椰子重新合在一起,繼續(xù)睡覺。不久,第二名水手醒來(lái),同樣將椰子了等分成五份,恰好也多出一個(gè),也給了猴子。然而自己也藏起一份,再將剩下的椰子重新合在一起。以后每個(gè)水手都如此分了一次并都藏起一份,也恰好都把多出的一個(gè)給了猴子。第二天,五個(gè)水手醒來(lái),發(fā)現(xiàn)椰子少了許多,心照不喧,便把剩下的椰子分成五份,恰好又多出一個(gè),給了猴子。請(qǐng)問(wèn)水手最初最少摘了多少個(gè)椰子?
?
4.9 解佩爾方程
佩爾方程,是一種不定二次方程。
x^2 - n y^2 = 1 (其中,n為非平方正整數(shù))
通常把佩爾方程中x,y中有一個(gè)為零的解稱為平凡解,非零解稱為非平凡解,最小正整數(shù)非平凡解稱為基本解,求出基本解,其他解可由基本解推出。
【編程題】
探求佩爾方程的基本解
4.9.1 枚舉試探求解
用枚舉法逐個(gè)探測(cè)。這個(gè)只能處理n較小的情況
?
4.9.2 應(yīng)用連分?jǐn)?shù)高精求解
拉格朗日給出了解決方案 ,應(yīng)用連分?jǐn)?shù)求解佩爾方程。
具體可以百度
?
【讀者體會(huì)】
這一章介紹了一些經(jīng)典的方程。
如果需要編程求解方程。
編程設(shè)計(jì)要點(diǎn)。枚舉法。
1)推理。分析方程或方程組,推理得到參數(shù)之間的關(guān)系或取值范圍(遞進(jìn)規(guī)律)
2)枚舉。設(shè)置處理循環(huán)
3)判定方程是否成立。
4)輸出。