結果

問題 No.3 ビットすごろく
ユーザー monakamonaka
提出日時 2022-01-03 13:47:10
言語 TypeScript
(5.7.2)
結果
AC  
実行時間 1,642 ms / 5,000 ms
コード長 664 bytes
コンパイル時間 8,214 ms
コンパイル使用メモリ 229,788 KB
実行使用メモリ 45,548 KB
最終ジャッジ日時 2024-12-31 16:43:10
合計ジャッジ時間 25,879 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 33
権限があれば一括ダウンロードができます

ソースコード

diff #

function main(input) {
  const n = parseInt(input[0]);
  const minStep = [];
  walk(1, n, minStep, 1);
  if(minStep[n]) {
    console.log(minStep[n]);
  } else {
    console.log(-1);
  }
}

function walk(now, n, minStep, step) {
  if(now < 1 || now > n) return;
  if(!minStep[now]) minStep[now] = step;
  if(minStep[now] < step) return;
  minStep[now] = step;
  const num = countOneBit(now);
  walk(now+num, n, minStep, step+1);
  walk(now-num, n, minStep, step+1);
}

function countOneBit(i) {
  let count = 0;
  while(i > 0) {
    if((i & 1) === 1) count++;
    i >>= 1;
  }
  return count;
}

main(require("fs").readFileSync("/dev/stdin", "utf8").split("\n"));
0