結果
| 問題 |
No.3 ビットすごろく
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2018-01-08 01:18:59 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 985 bytes |
| コンパイル時間 | 281 ms |
| コンパイル使用メモリ | 12,544 KB |
| 実行使用メモリ | 256,624 KB |
| 最終ジャッジ日時 | 2024-12-23 11:20:42 |
| 合計ジャッジ時間 | 97,637 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 18 TLE * 15 |
ソースコード
from collections import deque
def bfs(start, goal):
queue = deque([])
visited = set()
queue.append([start])
while queue:
# print("="*30)
# print(queue)
v = queue.popleft()
# print("{} checking...".format(v[-1]))
if v[-1] == goal:
return v
exit()
for x in g[v[-1]]:
if x in visited:
# print("{} is already visited.".format(x))
pass
if x not in visited:
# print("{} is hajimete.".format(x))
# print(v + [x])
queue.append(v + [x])
visited.add(v[-1])
N = int(input())
m = []
g = {}
for i in range(1, N + 1):
m.append("{:b}".format(i).count("1"))
for i in range(len(m)):
l = []
if i + m[i] < len(m):
l.append(i + m[i])
if i - m[i] >= 0:
l.append(i - m[i])
g[i] = l
path = bfs(0, N - 1)
if path:
print(len(path))
else:
print("-1")