<?php
/*
* 开灯问题
* 描述:
* n盏灯,编号为1——n,第一个人把所有的灯打开,第二个人会按下所有编号为2的倍数的开关
* 这样本来开着的灯会关上,第三个人会按下3的倍数的开关,那么关的灯会打开,开的灯会
* 关掉,依次类推,问最后开着的灯的编号是?(k<=n<=1000)
*/
$n = 100;
$k = 10;
//第一个参数是开始的索引,第二个是填充个数,第三个是填充的元素值
$deng = array_fill(1, $n, 0);
for ($i = 1;$i <= $k;$i++) {
for ($j = 1;$j <= $n;$j++) {
if ($j % $i == 0) {
$deng[$j] = !$deng[$j];
}
}
}
for ($i = 1;$i <= $n; $i++) {
if($deng[$i]) {
echo $i.” “;
}
}
?>
这样不论如何变换都可以知道结果了,比如:关着的编号是?刚开始灯是开着的,然后求关着和开着的呢???是不是很有意思呢?