結果
問題 |
No.3 ビットすごろく
|
ユーザー |
![]() |
提出日時 | 2017-06-02 13:58:38 |
言語 | Python2 (2.7.18) |
結果 |
RE
|
実行時間 | - |
コード長 | 854 bytes |
コンパイル時間 | 50 ms |
コンパイル使用メモリ | 6,944 KB |
実行使用メモリ | 7,424 KB |
最終ジャッジ日時 | 2024-09-21 22:11:56 |
合計ジャッジ時間 | 2,589 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 1 RE * 32 |
ソースコード
def bitone(n): cnt = 0 m = n while m > 0: if m % 2 == 1: cnt += 1 m = m / 2 return cnt def maketree(i, n, memo): left = [] right = [] p = i + bitone(i) m = i - bitone(i) nmemo = memo if p <= n and not(p in memo): nmemo.append(p) if m >= 1 and not(m in memo): nmemo.append(m) if p in nmemo: left = maketree(p, n, nmemo) if m in nmemo: right = maketree(m, n, nmemo) return [i, left, right] def bfs(tree, n): lst = [tree] search = [tree] cnt = 1 while lst != []: nsearch = [] for i in range(0, len(search)): node = lst.pop(0) if node[0] == n: return cnt if node[1] != []: nsearch.append(node[1]) lst.append(node[1]) if node[2] != []: nsearch.append(node[2]) lst.append(node[2]) search = nsearch cnt += 1 return -1 n = int(raw_input()) tree = maketree(1, n, [1]) print bfs(tree, n)