<?php
// 1が2回続いた後、2の倍数になる。
// 1,2,1,1,4,1,1,6,1,1,8
// 分母は (前の分母 × 順列1,2,1,1,4...) + (前の前の分母)
// 分子は (前の分子 × 順列1,2,1,1,4...) + (前の前の分子)
// $bunbo = array(1=>1,2=>1);
// 片方だけで完結できるので、求めるのは分子だけ
$bunshi = array(1=>array(0=>2),2=>array(0=>3));
$pow10 = pow(10,10);
for($i = 3; $i <= 100 ; $i++)
{
// 連分数の作成
// (2 + 1/1) = 3/1;
// (2 + 1/(1+1/2)) = 2 + 1/(3/2) = 2 + 2/3 = 8/3
// (2 + 1/(1+1/(2 + 1/1)) = 2 + 1/(1+1/3) = 2 + 1/(4/3) = 2 + 3/4 = 11/4
if($i % 3 == 0 )
{
for($j = 0 ; $j < count($bunshi[$i - 1]) ; $j++)
{
$bunshi[$i][$j] = $bunshi[$i - 1][$j] * 2 * (int) ($i / 3) + $bunshi[$i -2][$j];
}
//$bunbo[$i] = $bunbo[$i - 1] * 2 * (int)($i / 3) + $bunbo[$i -2];
}
else
{
for($j = 0 ; $j < count($bunshi[$i - 1]) ; $j++)
{
@$bunshi[$i][$j] = $bunshi[$i - 1][$j] + $bunshi[$i -2][$j];
}
//$bunbo[$i] = $bunbo[$i - 1] + $bunbo[$i -2];
}
foreach($bunshi[$i] as $k => $v)
{
while($v >= $pow10)
{
@$bunshi[$i][$k+1]++;
$bunshi[$i][$k] -= $pow10;
$v -= $pow10;
}
}
}
$answer = 0;
foreach($bunshi[count($bunshi)] as $v)
{
$len = strlen($v);
for($i = 0 ; $i < $len ; $i++)
{
$answer += substr($v,$i,1);
}
}
echo $answer."\n";
?>