看到一道题,大家都来算算
由1-2000,从1开始隔一取数,将取得的数除去,问最后能剩余的数是几,经过几次能得到这个数。 用php怎么写出来
有点像约涩夫环的问题。思路类似,有意思,帮顶!


程序代码:<?php
$arr = range(1,2000);
$loop_for_start =0; //用于找开始的那个数
$left = 2000; //表示还剩下的数
$times =0; //循环次数
$last = 0; //最后一个
while($left>1)
{
$loop_for_start=0;
while($arr[$loop_for_start]==0 && $loop_for_start<2000)
{
$loop_for_start++;
}
print($loop_for_start." .... ");
//得到开始的位置了,开始循环
$arr[$loop_for_start]=0;
//print('$arr['.$loop_for_start."]=".$arr[$loop_for_start]);/////////////////////////////
$left--;
while($loop_for_start<2000 && $left>1)
{
//得到后面一个
$loop_for_start++;
while($arr[$loop_for_start]==0 && $loop_for_start<2000)
{
$loop_for_start++;
}
//再取后面一个,隔一除去
$loop_for_start++;
while($arr[$loop_for_start]==0 && $loop_for_start<2000)
{
$loop_for_start++;
}
//如果不为0就可以删除了
if($arr[$loop_for_start]!=0){
$arr[$loop_for_start]=0;
$left--;
}
}
$times++;
}
print($times."次..\n");
//找下最后一个
$loop_for_start=0;
while($arr[$loop_for_start]==0 && $loop_for_start<2000){
$loop_for_start++;
}
if($loop_for_start==2000){
print('失败');
} else {
print('最后剩下'.$loop_for_start."\n");
}
?>