結果

問題 No.3 ビットすごろく
コンテスト
ユーザー qlt
提出日時 2025-10-25 01:21:05
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 2,147 ms / 5,000 ms
コード長 852 bytes
コンパイル時間 368 ms
コンパイル使用メモリ 82,984 KB
実行使用メモリ 82,296 KB
最終ジャッジ日時 2025-10-25 01:21:34
合計ジャッジ時間 27,674 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 33
権限があれば一括ダウンロードができます

ソースコード

diff #

N = int(input())

stack = []
ceil_dist = dict()
answer = 1000000

for j in range(1, 10001):
    ceil_dist[j] = 1000000

stack.append([1, 1])
ok_flag = False

while stack:
    ceil = stack.pop()
    turn = ceil[0]
    now = ceil[1]

    dice = 0

    for j in range(14):
        if (now >> j) & 1 == 1:
            dice += 1
    
    f_now = now + dice
    p_now = now - dice

    if (f_now <= N) and (turn + 1 < ceil_dist[f_now]):
        stack.append([turn + 1, f_now])
        ceil_dist[f_now] = turn + 1
        if f_now == N:
            if turn + 1 < answer:
                answer = turn + 1
            ok_flag = True
    if (p_now >= 1) and (turn + 1 < ceil_dist[p_now]):
        stack.append([turn + 1, p_now])
        ceil_dist[p_now] = turn + 1

if ok_flag:
    print(answer)
else:
    if N == 1:
        print(1)
    else:
        print(-1)
0