パンデジタル数の生成は
Problem 41を参考にしつつとく。
<?php
// パンデジタル数を作成しながら、割り切れるか調べる。
$prime = array(3=>17,4=>13,5=>11,6=>7,7=>5,8=>3,9=>2);
$answer = 0;
$array = array(9,8,7,6,5,4,3,2,1,0);
// 配列を並び替えて、ひとつの数値にする
foreach($array as $v)
{
create_p($array,$v,$v);
}
function create_p($array,$num1,$num2)
{
global $prime;
$result = array_diff($array,array($num1));
if(count($result) > 0)
{
if(strlen($num2) < 3)
{
foreach($result as $v)
{
create_p($result,$v,$v.$num2);
}
}
else
{
if(substr($num2,0,3) % $prime[strlen($num2)] == 0 )
{
foreach($result as $v)
{
create_p($result,$v,$v.$num2);
}
}
}
}
else
{
check_p($num2);
}
}
function check_p($num)
{
global $answer;
$answer += $num;
}
echo $answer."\n";
?>