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