狐狸找兔子—php实现

看C语言的时候有这么一道题

围绕着山顶有10个洞,一只兔子和一只狐狸住在各自的洞里,狐狸总想吃掉兔子,一天兔子对狐狸说,你想吃我有一个条件,你先把洞编号1到10,你从第10洞出发,先到第1号洞找我,第二次隔一个洞找我,第三次隔两个洞找我,以后依次类推,次数不限,若能找到我你就可以饱餐一顿,在没找到我之前不能停止,狐狸一想只有10个洞,寻找的次数又不限,哪有找不到的道理,就答应了条件,结果狐狸跑得昏了过去也没找到兔子,请问兔子躲在哪个洞里。程序中可假定狐狸找了1000次。

首先是找到这个数列的规律
由题目知道,狐狸寻找的山洞编号为1 3 6 10………………
典型的n*(n+1)/2

也就是求出哪些洞没有找过而已

php代码的一种实现

$arr = range(0,9);
$arr2 = [];
for ($i = 1; $i <= 1000;$i++)
{
    $a = ($i * ($i + 1) /2%10);
    if (!in_array($a,$arr2))
    {
        $arr2[] = $a;
    }
}
var_dump(array_diff($arr,$arr2));

运行结果是

array (size=4)
  2 => int 2
  4 => int 4
  7 => int 7
  9 => int 9

所以可以得出 兔子有四个安全洞,2 4 7 9

你可能感兴趣的:(PHP:都是世界的错)