結果

問題 No.3 ビットすごろく
ユーザー urunea
提出日時 2025-04-22 01:11:06
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 158 ms / 5,000 ms
コード長 628 bytes
コンパイル時間 412 ms
コンパイル使用メモリ 82,712 KB
実行使用メモリ 78,080 KB
最終ジャッジ日時 2025-04-22 01:11:11
合計ジャッジ時間 5,459 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 33
権限があれば一括ダウンロードができます

ソースコード

diff #

from collections import Counter

N=int(input())
A=[]
for i in range(1,N+1):
    a=str(bin(i))[2:]
    C=Counter(a)
    A.append(C["1"])

visited=[N+2]*N
visited[1-1] = 1
stack=[1]
next_move=[]
p=2
while stack:
    for i in stack:
        num = Counter(str(bin(i))[2:])["1"]
        if 0 <= i-num-1 < N and visited[i-num-1] == N+2:
            visited[i-num-1] = p
            next_move.append(i-num)
        if 0 <= i+num-1 < N and visited[i+num-1] == N+2:
            visited[i+num-1] = p
            next_move.append(i+num)
    
    p += 1
    stack, next_move = next_move, []

print(visited[-1] if visited[-1] != N+2 else -1)
0