結果
| 問題 | No.3 ビットすごろく | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2023-12-02 00:17:04 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 78 ms / 5,000 ms | 
| コード長 | 1,006 bytes | 
| コンパイル時間 | 271 ms | 
| コンパイル使用メモリ | 82,176 KB | 
| 実行使用メモリ | 76,928 KB | 
| 最終ジャッジ日時 | 2024-09-26 16:06:01 | 
| 合計ジャッジ時間 | 3,365 ms | 
| ジャッジサーバーID (参考情報) | judge4 / judge3 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 33 | 
ソースコード
import sys
from collections import deque,defaultdict
import itertools
import heapq
import bisect
import math
#sys.setrecursionlimit(10 ** 9)
input = lambda: sys.stdin.readline().rstrip()
ii = lambda: int(input())
mi = lambda: map(int, input().split())
ml = lambda: map(str, input().split())
li = lambda: list(mi())
li_st = lambda: list(map(str, input().split()))
lli = lambda n: [li() for _ in range(n)]
mod = 998244353
N = ii()
check = [0] * (2*N)
q = deque()
def bit_num(num):
    ans = 0
    while(num > 0):
        if num % 2 == 1:
            ans += 1
        num //= 2
    return ans
q.append((1,1))
check[1] = 1
while(q):
    now,times = q.popleft()
    num = bit_num(now)
    if now - num > 0:
        if check[now-num] == 0:
            q.append((now-num,times+1))
            check[now-num] = times+1
    if now + num <= N:
        if check[now+num] == 0:
            q.append((now+num,times+1))
            check[now+num] = times+1
    times += 1
print(check[N] if check[N] != 0 else -1)
            
            
            
        