結果
| 問題 | No.3 ビットすごろく |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-12-02 00:17:04 |
| 言語 | PyPy3 (7.3.23) |
| 結果 |
AC
|
| 実行時間 | 89 ms / 5,000 ms |
| + 851µs | |
| コード長 | 1,006 bytes |
| 記録 | |
| コンパイル時間 | 233 ms |
| コンパイル使用メモリ | 96,032 KB |
| 実行使用メモリ | 85,116 KB |
| 最終ジャッジ日時 | 2026-09-05 00:08:02 |
| 合計ジャッジ時間 | 4,780 ms |
|
ジャッジサーバーID (参考情報) |
judge4_0 / judge1_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| 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)