有編號1~100個燈泡,起初全部的燈都是滅的。有100個同窗來按燈泡開關,若是燈是亮的,那麼按過開關以後,燈會滅掉。若是燈是滅的,按過開關以後燈會亮。
如今開始按開關。
第1個同窗,把全部的燈泡開關都按一次(按開關燈的編號: 1,2,3,......100)。
第2個同窗,隔一個燈按一次(按開關燈的編號: 2,4,6,......,100)。
第3個同窗,隔兩個燈按一次(按開關燈的編號: 3,6,9,......,99)。
......
問題是,在第100個同窗按過以後,有多少盞燈是亮着的?這些燈的編號是多少?要求給出解題思路或給出僞碼。 c++
//構造100盞燈,0表示關,1表示開 spa
for ($i=0;$i<100;$i++){ blog
$deng[] = 0; it
} im
//100我的 img
for ($a=1;$a<101;$a++){ co
//100我的來操做燈 background
for ($b = $a;$b<101;$b++){ ps
//判斷燈的關閉,開則關,關則開
if($deng[$b-1]==0){
$deng[$b-1]=1;
}else {
$deng[$b-1]=0;
}
//這裏控制每一個人操做那些燈,第一我的是1,2,3,而第二我的是2,4,6,第三我的是3,6,9
$b=$b+$a-1;
}
}
//打印燈的開關信息
for ($c=0;$c<100;$c++){
if($deng[$c]==0){
dump('第'.($c+1).'盞燈是關閉的');
}else {
dump('第'.($c+1).'盞燈是開着的');
}
}