結果

問題 No.3 ビットすごろく
ユーザー kazz4423
提出日時 2017-07-22 14:31:59
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
TLE  
実行時間 -
コード長 817 bytes
コンパイル時間 300 ms
コンパイル使用メモリ 12,672 KB
実行使用メモリ 18,976 KB
最終ジャッジ日時 2024-10-09 09:36:21
合計ジャッジ時間 7,148 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 3 TLE * 1 -- * 29
権限があれば一括ダウンロードができます

ソースコード

diff #

import copy

N = int(input())
endcount = []

def dfs(num, count, passlist):
    count += 1
    #print (str(count) + ':' + str(num))
    progress = getBynum(num)
    if num + progress == N:
        endcount.append(count+1)
        return
    elif (num + progress < N) & ((num + progress) not in  passlist):
        #print(passlist)
        passlist.append( num + progress)
        dfs(num + progress, count, copy.deepcopy(passlist))

    if num - progress == N:
        endcount.append(count+1)
        return
    elif (num - progress > 1) & ((num - progress) not in passlist):
        passlist.append( num - progress)
        dfs(num - progress, count, copy.deepcopy(passlist))

def getBynum(num):
    return bin(num)[2:].count('1')

dfs(1 ,0, [1])
if(len(endcount) == 0):
    print(-1)
else:
    print(min(endcount))
0