結果

問題 No.3 ビットすごろく
コンテスト
ユーザー kjnho
提出日時 2017-02-19 13:48:23
言語 Python3
(3.14.2 + numpy 2.4.0 + scipy 1.16.3)
結果
AC  
実行時間 2,982 ms / 5,000 ms
コード長 991 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 846 ms
コンパイル使用メモリ 20,700 KB
実行使用メモリ 102,872 KB
最終ジャッジ日時 2026-01-04 18:57:52
合計ジャッジ時間 103,717 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 33
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import re
from scipy import integrate
from operator import itemgetter
from collections import defaultdict as dd
from collections import Counter
from collections import deque
import numpy as np
import fractions
import itertools
import math
import heapq
from heapq import heappop, heappush, heapify
from copy import deepcopy as dcopy

N = int(input())
# N = 5000

stack = deque()
stack.append((1, 0)) # count, position, arrived, root
D = [1] + [float("inf")]*(N-1) # saitankyorimap

flag = False
while len(stack) != 0:
    count, position = stack.popleft()
    number = position + 1

    if number == N:
        print(count)
        flag = True
        break

    move_size = bin(number).count("1")
    for move in (move_size, - move_size):
        new_position = position + move
        new_count = count + 1
        if (0 <= new_position <= N-1) and D[new_position] > count:
            D[new_position] = count
            stack.append((new_count, new_position))

if not flag:
    print(-1)
0