0; $i--) { if (($i*$i) < $input) { $heihou[] = $i*$i; } } // 一番大きい数から挿れていき最後の一番小さい1で調整する $c = $input; $res = []; foreach($heihou as $v) { if ($c - $v >= 0) { $c -= $v; $res[] = $v; } if ($c == 0) { break; } } if ($c>0) { for ($i=$c; $i>0; $i--) { $res[] = 1; } } echo count($res)."\n"; echo implode(" ", $res); ?>