陳新龍
今天分享一道2020年藍(lán)橋杯選拔賽的數(shù)學(xué)思維編程題目——開關(guān)燈。題目如下:
有十盞燈,從1到10按順序依次編號,初始時全部燈處于開啟狀態(tài)。有十個人也從1到10依次編號。第一個人(1號)將燈全部關(guān)閉,第二個人(2號)將編號2的倍數(shù)的燈全部打開,第三個人(3號)將編號為3的倍數(shù)的燈做相反處理。即將打開的燈關(guān)閉,將關(guān)閉的燈打開。后面的人繼續(xù)按3號的操作方法依次操作,把對應(yīng)編號倍數(shù)的燈做相反處理。那么當(dāng)?shù)?0個人操作之后,哪幾盞燈是關(guān)閉的,哪幾盞燈是開啟的?
可能不少人讀完題目之后還處于一頭霧水的狀態(tài),沒有任何思路,這里介紹個方法,我們可以利用Office的表格來梳理題目的流程。打開Excel軟件,進(jìn)行簡單的布局操作,橫向列為第1盞燈到第10盞燈,縱向行為第1個人到第10個人。根據(jù)題目的要求填空,燈開啟的狀態(tài)用數(shù)字1代替,關(guān)閉的狀態(tài)用數(shù)字0代替。
依次按照規(guī)則填空,比如第二個人將2號、4號、6號、8號、10號位置的燈打開,第三個人將3、6、9位置的燈做相反的操作,將開著的燈關(guān)閉,將關(guān)閉的燈打開。以此類推,直至最后第十個人操作后,可以看到1號、4號、9號燈是關(guān)閉狀態(tài),其余的燈開著。
在Scratch中編程,建立一個保存燈狀態(tài)的列表“十盞燈”,數(shù)字0代表燈的狀態(tài)為關(guān),數(shù)字1代表燈的狀態(tài)為開。當(dāng)綠旗被點擊后,列表添加10個元素,全部為1。
每點擊一次空格,小貓都會說:“第X個人來了”(X是人的序號),隨后將列表中的元素按照題目要求進(jìn)行處理,燈的編號與列表項目編號一致,數(shù)字0代表關(guān),數(shù)字1代表開。連續(xù)點擊10次后,列表中所有的元素值與表格演算一致。
通過循環(huán)重復(fù)執(zhí)行將數(shù)字1添加入十盞燈列表中,并且增加兩個變量“第幾個人”和“倍數(shù)”。綠旗運(yùn)行時,變量“第幾個人”設(shè)置為1。當(dāng)按下空格鍵時,變量“倍數(shù)”設(shè)置為1,由于第一個人開始需要進(jìn)行開關(guān)燈的設(shè)置,這里我們可以添加一個判斷語句,當(dāng)滿足條件第幾個人×倍數(shù)不超過10時,將列表中的第幾個人×倍數(shù)的項進(jìn)行替換,比如第二個人需要將列表第2號、4號、6號、8號、10號位置進(jìn)行數(shù)字替換(數(shù)字1替換成數(shù)字0,數(shù)字0替換成數(shù)字1)。
數(shù)字轉(zhuǎn)換的兩種方法,一是拿數(shù)字1-項數(shù)【1-1=0;1-0=1】;第二種是拿項數(shù)乘-1加1【1*-1+1=0;0*-1+1=1】。
另外在循環(huán)中不要忘記對變量“倍數(shù)”和變量“第幾個人”進(jìn)行累加。當(dāng)?shù)谑畟€人進(jìn)行開關(guān)燈后的結(jié)果為1號、4號、9號燈滅掉,其余燈為亮的。
通過簡單的Scratch編程,我們將數(shù)學(xué)思維游戲成功解答出來了,恭喜聰明的你又掌握了新的知識點,陳老師在后期也會和大家分享更多有趣的數(shù)學(xué)編程游戲,一起期待吧。