結果

問題 No.3 ビットすごろく
ユーザー ynishimuraynishimura
提出日時 2020-10-09 08:57:52
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
AC  
実行時間 40 ms / 5,000 ms
コード長 2,291 bytes
コンパイル時間 228 ms
コンパイル使用メモリ 12,672 KB
実行使用メモリ 11,392 KB
最終ジャッジ日時 2024-07-01 09:57:19
合計ジャッジ時間 2,449 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 33
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

from collections import deque
N = int(input())
def movable_distance(num):
"21 => "
# print(f'num:{num}, b:{bin(num)}')
# 21
return bin(num).count("1")
def bit():
que = deque()
que.append(1) #
# N(1<N<10000)
trout = deque([0] * (N + 1))
# 1
trout[1] = 1
while (len(que) > 0):
# print(f'#### {que}')
now = que.popleft() #
# debug
# for i in range(N):
# if (i + 1 == now):
# print(f'*{trout[i + 1]}|', end='') #
# elif (now == N):
# print(f'gaol => {trout[now]}', end='') #
# break
# elif (trout[i + 1] != 0):
# print(f'{trout[i + 1]}|', end='') #
# else:
# print('-|', end='') #
# print()
if now == N:
return trout[N] #
movecnt = movable_distance(now) #1
# print(f'now {now}, movecnt {movecnt}')
back = now - movecnt #
forward = now + movecnt #
if (back > 0 and trout[back] == 0):
que.append(back) #
trout[back] = trout[now] + 1 #
# print(
# f'{back}: {trout[back]}, append: {back}'
# )
if (forward <= N and trout[forward] == 0):
que.append(forward) #
trout[forward] = trout[now] + 1 #
# print(
# f'{forward}: {trout[forward]}, append: {forward}'
# )
return -1
if __name__ == "__main__":
print(bit())
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0