資訊內容
如何用scratch解決百錢買百雞?
“scratch還可以這樣啊!”一位媽媽在看到自己的孩子用編程解決了一個古老的數學問題百錢買百雞,驚喜地發出這樣的感嘆。
公雞5錢一只,母雞3錢一只,小雞1錢三只,共有100錢數,要求如何用100錢買100只雞,且要求公雞、母雞、小雞都有。問要買公雞多少只?母雞多少只?小雞多少只?
從現代數學觀點來看,實際上是一個求不定方程整數解的問題。解法如下:
設公雞、母雞、小雞分別為x、y、z 只,由題意得:有兩個方程,三個未知量,稱為不定方程組,則有多種解。
①……x+y+z =100
②……5x+3y+(1/3)z =100
下面再看看x,y,z的取值范圍。
由于只有100錢,由5x<100?=>?0<="" p="">
那如何用scratch來解決這一問題呢?新建三個變量“公雞的數量”、“母雞的數量”、“小雞的數量”,作為小學生可能還不能夠深刻理解用變量來表示算數表達式,如果類比數學應用題中的設未知數“x”、“y”、“z”,這便容易理解多了,這道題便是這樣,可以得到兩個關于變量的算數表達式。
百錢買百雞最適宜學習窮舉法(枚舉法),所謂窮舉法,顧名思義窮盡每一種可能性,通常在找不到解決問題的規律時對可能是解的眾多候選解按照某一順序進行逐一枚舉和檢驗,并從中找出那些符合要求的候選解作為問題的解。考慮到算法的時間復雜度與空間復雜度還可以不斷優化,方法并不唯一。
scratch擁有計時器的功能,可以更加直觀的將程序執行所需時間顯示出來。
方法一:x的取值范圍為1~20, y的取值范圍為1~33,z的取值范圍為3~99(以3的數量增加),利用三層循環嵌套遍歷x、y、z的所有可能的組合。程序執行完成所花費的時間約為4秒,當然也可以簡化此程序。
方法二:公雞的數量為x,母雞的數量為y,小雞的數量為z,從1開始窮舉小雞與母雞的數量,則公雞的數量為x=100-y-z,只需要兩層循環嵌套便可實現。程序執行完成所花費的時間約為0.5秒。
方法三:一層循環的實現方法需要推算一下這個不定方程。
? ? x+y+z=100 ? ? ? ? ?①
? ? 5x+3y+z/3=100 ? ?②
?令②x3-① 可得
? ? 7x+4y=100
=>? ? ? ? ? ? ? ??y=25-(7/4)x ??? ? ? ?③
同理可推得? ?
?=>??? ? ? ? ? ? ?z=75+(3/4)x??? ? ? ?④
程序執行完成所花費的時間約為0.01秒。
學生通常會帶給老師很多啟發,這比老師帶給學生的更具沖擊感。解決這一問題,可能是根深蒂固的固有思維,我們往往窮舉雞的數量,但是,一次上課,一位同學設的變量為每種雞所花費的錢數,于是豁然開朗。
方法四:利用三層循環嵌套窮舉錢數,程序執行完成所花費的時間約為9.3秒。當然還可以繼續改進該程序,用兩層循環或者一層循環均可。
考慮到每種雞都要有,則共有3組數成立:
4只公雞18只母雞78只小雞
8只公雞11只母雞81只小雞
12只公雞4只母雞84只小雞
聲明:本文章由網友投稿作為教育分享用途,如有侵權原作者可通過郵件及時和我們聯系刪除

- 上一篇
德潤 | Scratch編程語言,為孩子量身定制的邏輯思維工具
感恩節前幾天,9歲的雯雯想給爸媽做一張太空主題的節日賀卡。 她剛開始學Scratch,不是很熟練,但是學得很主動。 她說:“我想讓小宇航員從遠處慢慢飛過來,不斷變大。但是……用三四次‘變大’的模塊,會不會太麻煩了。” 老師
- 下一篇
編程+跳繩
見過我校顯示屏上的那只龍貓的家長和孩子們都十分好奇,龍貓圓滾滾的,眼神十分單純,呆呆地望著前方的我們,看起來憨厚、單純,一觸碰到它毛茸茸又圓潤的大肚子它便會發出“嘟”的一聲緩緩地跳起來,跳起來的同時大肚子還會微微顫動,敦實的形象、無害的模樣博得了所有人的關注和喜愛,誠然孩子們看見是十分歡