結果
| 問題 | No.3 ビットすごろく | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2021-07-04 11:49:26 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 59 ms / 5,000 ms | 
| コード長 | 514 bytes | 
| コンパイル時間 | 145 ms | 
| コンパイル使用メモリ | 82,144 KB | 
| 実行使用メモリ | 70,372 KB | 
| 最終ジャッジ日時 | 2024-07-01 01:12:59 | 
| 合計ジャッジ時間 | 2,932 ms | 
| ジャッジサーバーID (参考情報) | judge1 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 33 | 
ソースコード
N = int(input())
went = []
l = [(1, 1)]
visited = {}
while(l):
    now, cost = l.pop(0)
    if now == N:
        print(cost)
        exit()
    bit_count = bin(now)[2:].count('1')
    forwarded = now + bit_count
    if forwarded <= N and not forwarded in visited:
        visited[forwarded] = True
        l.append((forwarded, cost + 1))
    backwarded = now - bit_count
    if 0 < backwarded and not backwarded in visited:
        visited[backwarded] = True
        l.append((backwarded, cost + 1))
print(-1)
            
            
            
        