PHP Ladder
function ladder(array $a, array $b): array
{
$size = count($a);
$r = array_fill(0, $size, 0);
$mod = (1 << max($b)) - 1;
$fib = [0, 1];
for ($i = 2, $limit = max($a); $i < $limit + 2; $i++) {
$fib[$i] = ($fib[$i - 1] + $fib[$i - 2]) & $mod;
}
for ($i = 0; $i < $size; $i++) {
$r[$i] = $fib[$a[$i] + 1] & ((1 << $b[$i]) - 1);
}
return $r;
}
This precomputes climb counts once and applies the modulo per query, which avoids recalculating the same paths over and over.