開燈關燈問題

2021-09-08 11:09:01 字數 1984 閱讀 6234

有編號1~100個燈泡,起初所有的燈都是滅的。有100個同學來按燈泡開關,如果燈是亮的,那麼按過開關之後,燈會滅掉。如果燈是滅的,按過開關之後燈會亮。

現在開始按開關。

第1個同學,把所有的燈泡開關都按一次(按開關燈的編號: 1,2,3,......100)。

第2個同學,隔乙個燈按一次(按開關燈的編號: 2,4,6,......,100)。

第3個同學,隔兩個燈按一次(按開關燈的編號: 3,6,9,......,99)。

......

問題是,在第100個同學按過之後,有多少盞燈是亮著的?

這個問題有乙個數學上的解決方法。可以看出,被按了奇數次的燈泡應該是亮著的,被按了偶數次的燈泡應該是滅的。那麼什麼樣的燈泡被按了奇數次?什麼樣的燈泡又被按了偶數次呢?從按的過程可以發現,如果乙個燈泡的編號具有偶數個因子,那麼該燈泡就被按了偶數次,反之按了奇數次。現在的問題又變成,什麼樣的編號具有奇數個因子,什麼樣的編號具有偶數個因子?這涉及到乙個叫做質因數分解的定理,大概的意思是說,任何正數都能被唯一表示成多個質因數冪次乘積的方式。

例如:14=2*7

50=2*5^2

...100=2^2*5^2

也就是n=(p[1]^e[1])*(p[2]^e[2])*......*(p[k]^e[k]),其中p[i]是質數,e[i]是p[i]的冪次。而由這個公式我們又可以匯出乙個數有多少個因子的計算公式:factornumber(n)=(e[1]+1)*(e[2]+1)*......*(e[k]+1)。

那麼什麼條件下滿足factornumber(n)是奇數呢?顯然必須所有的e[1],e[2],......,e[k]都必須是偶數,這樣才能保證e[i]+1是奇數,結果乘積才能是奇數。而由於e[1],e[2],......,e[k]都是偶數,那麼n一定是乙個完全平方數(因為sqrt(n)=(p[1]^(e[1]/2))*(p[2]^(e[2]/2))*......*(p[k]^(e[k]/2))是整數) 。回到按燈泡的問題上來,1~100中完全平方數有1,4,9,16,25,36,49,64,81,100這10個數,也就是說最後只有編號為這10個數的燈是亮著的。

這裡解釋一下 factornumber(n)=(e[1]+1)*(e[2]+1)*......*(e[k]+1)。為什麼f(n)等於所有的e(i)+1 相乘,

對n進行質因數分解。不失一般性,假設n=x^a * y^b * z^c * ……. x^a表示x的a次冪。 那麼n的約數相當於x取(0次冪,1次冪,……,a次冪),y取(0次冪,1次冪,……,b次冪),z取(0次冪,1次冪,……,c次冪),……。其約數的個數等於(a+1)*(b+1)*(c+1)*……。當所有的指數都為0是,約數為1,當所有的指數取最大時,為n本身。

若想使約數的個數為奇數,則a,b,c,……必須均為偶數,也就是說n必須是完全平方數。

20 = 1*2^2*5^1;

20 = 1*20=2*10=4*5都是成對出現的,20的約束的個數= 3(2的指數+1) *2(5的指數+) = 6 

36 = 1*36=2*18=3*12=4*9=6*6 完全平方數不是成對出現的,而是有單數出現。

~正如一樓所言,這個題就是考察1~100每個數字的因子數的奇偶性。有奇數個因數的燈狀態和初始狀態相異,反之,因數是偶數個的,燈的狀態不變。舉兩個例子:2號燈有1和2兩個因數(2=12),所以開關兩次,等狀態不變;4號燈有1、2、4三個因數,(4=14=22)按三次,和初始狀態不同,即一開始燈是滅著的,按完三次燈就亮了。 

為什麼舉這兩個例子呢?是有道理的,呵呵。我們注意到,每個數字的因數都是成對出現的,比如每個數字都至少有1和它本身(1是特例,1就是它本身)兩個因數,再比如36的因數1和36,2和18,3和12,4和9,都是成對出現的。所以,當且僅當,某個數字中成對出現的兩個因數相同時,(比如上面的例子4有22這對因子),即這個數字可以被開方是整數時,它的因子個數才會變為奇數。 

所以可以有下面的結論,開方結果是整數的數(燈),最後是亮的,也就是說號碼為1的平方、2的平方、3的平方……10的平方的燈,即號碼為1、4、9、16、25、36、49、64、81、100的燈,這10展燈是亮的。

開燈關燈問題

題目 大廳裡有100盞燈,每盞燈都編了號碼,分別為1 100。每盞燈由乙個開關來控制。開關按一下,燈亮,再按一下燈滅。開關的編號與被控制的燈相同。開始時,燈是全滅的。現在按照以下規則按動開關。第一次,將所有的燈點亮。第二次,將所有2的倍數的開關按一下。第三次,將所有3的倍數的開關按一下。以此類推。第...

開燈關燈問題

有編號1 100個燈泡,起初所有的燈都是滅的。有100個同學來按燈泡開關,如果燈是亮的,那麼按過開關之後,燈會滅掉。如果燈是滅的,按過開關之後燈會亮。現在開始按開關。第1個同學,把所有的燈泡開關都按一次 按開關燈的編號 1,2,3,100 第2個同學,隔乙個燈按一次 按開關燈的編號 2,4,6,10...

開燈關燈問題

有編號1 100個燈泡,起初所有的燈都是滅的。有100個同學來按燈泡開關,如果燈是亮的,那麼按過開關之後,燈會滅掉。如果燈是滅的,按過開關之後燈會亮。現在開始按開關。第1個同學,把所有的燈泡開關都按一次 按開關燈的編號 1,2,3,100 第2個同學,隔乙個燈按一次 按開關燈的編號 2,4,6,10...