結果
| 問題 | No.3 ビットすごろく |
| コンテスト | |
| ユーザー |
kekure
|
| 提出日時 | 2019-07-11 21:41:58 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 61 ms / 5,000 ms |
| コード長 | 786 bytes |
| コンパイル時間 | 147 ms |
| コンパイル使用メモリ | 82,212 KB |
| 実行使用メモリ | 70,616 KB |
| 最終ジャッジ日時 | 2024-07-01 09:24:53 |
| 合計ジャッジ時間 | 2,865 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 33 |
ソースコード
class Que:
def __init__(self, li=[]):
self.li = li
def popleft(self):
if not self.li:
return -1
x = self.li[0]
del self.li[0]
return x
def append(self, x):
return self.li.append(x)
def has_q(self):
if self.li:
return True
else:
return False
N = int(input())
memory = [-1] * (N + 1)
memory[1] = 1
q = Que([1])
while q.has_q():
i = q.popleft()
ones = bin(i)[2:].count('1')
forward = i + ones
back = i - ones
if 0 < forward <= N and memory[forward] == -1:
memory[forward] = memory[i] + 1
q.append(forward)
if 0 < back <= N and memory[back] == -1:
memory[back] = memory[i] + 1
q.append(back)
print(memory[N])
kekure