結果
| 問題 |
No.3 ビットすごろく
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-12-09 21:07:04 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,232 bytes |
| コンパイル時間 | 143 ms |
| コンパイル使用メモリ | 12,928 KB |
| 実行使用メモリ | 12,672 KB |
| 最終ジャッジ日時 | 2024-09-27 03:45:35 |
| 合計ジャッジ時間 | 3,105 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 14 WA * 19 |
ソースコード
from collections import deque
def bit(n):
cnt=0
while n:
cnt+=n%2
n=n//2
return cnt
def main():
N=int(input())
adj=[[] for i in range(N+1)]
flag=[False]*(N+1)
flag[1]=True
queue=deque()
queuelen=1
deepness=2
deepnessflag=False
solved=False
queue.appendleft(1)
result=[]
for i in range(N+1):
if N >= i+bit(i) and i+bit(i)>0:
adj[i].append(i+bit(i))
if N>=i-bit(i) and i-bit(i)>0:
adj[i].append(i-bit(i))
#print(adj)
if N==1:
print(1)
else:
while queuelen!=0 and not solved:
if deepnessflag:
deepnessflag=False
deepness+=1
#print("深さの増加")
v=queue.pop()
queuelen-=1
for u in adj[v]:
if u == N:
solved=True
if flag[u]==False:
flag[u]=True
queue.appendleft(u)
queuelen+=1
#print(u,"を発見",deepness)
deepnessflag=True
if solved:
print(deepness)
else:
print(-1)
main()