結果

問題 No.3 ビットすごろく
ユーザー kuromookkuromook
提出日時 2016-06-06 22:49:19
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
TLE  
実行時間 -
コード長 1,435 bytes
コンパイル時間 188 ms
コンパイル使用メモリ 12,544 KB
実行使用メモリ 412,296 KB
最終ジャッジ日時 2024-04-17 05:23:38
合計ジャッジ時間 6,825 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 31 ms
10,752 KB
testcase_01 AC 33 ms
10,752 KB
testcase_02 AC 32 ms
10,880 KB
testcase_03 TLE -
testcase_04 -- -
testcase_05 -- -
testcase_06 -- -
testcase_07 -- -
testcase_08 -- -
testcase_09 -- -
testcase_10 -- -
testcase_11 -- -
testcase_12 -- -
testcase_13 -- -
testcase_14 -- -
testcase_15 -- -
testcase_16 -- -
testcase_17 -- -
testcase_18 -- -
testcase_19 -- -
testcase_20 -- -
testcase_21 -- -
testcase_22 -- -
testcase_23 -- -
testcase_24 -- -
testcase_25 -- -
testcase_26 -- -
testcase_27 -- -
testcase_28 -- -
testcase_29 -- -
testcase_30 -- -
testcase_31 -- -
testcase_32 -- -
権限があれば一括ダウンロードができます

ソースコード

diff #

def go(n):
    ary = list(format(n,'b'))
    g = sum([int(a) for a in ary])
    return g


def sugoroku_map(val,debug=False):
    dic = {a:[a+go(a), a-go(a)] for a in range(1,val)}
    if debug:
        print(dic)
    return dic

def update_tree(val,dic, ary=[[1]]):
    reary = []
    flag = False
    for a in ary:
        b =list(a) 
        last = a[-1]
        if last in dic:
            el = dic[last]
            if val in el:
                flag = True
            if last == val:
                reary.append(a)
            else:
                # foward
                if (el[0] <= val) and (el[0] > 1) and (el[0] not in a):
                    a.append(el[0])
                    reary.append(a)
                # back
                if (el[1] <= val) and (el[1] > 1) and (el[1] not in b):
                    b.append(el[1])
                    reary.append(b)
        else:
            reary.append(a)
    return flag, reary


def main(debug=False):
    val = input()
    val = int(val)
    # make tree
    tree = [[1]]
    sugo_map=sugoroku_map(val, debug)
    for i in range(1,val):
        flag, tree = update_tree(val,sugo_map,tree)
        if debug:
            print(tree)
        if flag:
            print(len(tree[0]))
            return
    # tree length 
    length = [len(el) for el in tree if el[-1] == val]
    if len(length) > 0:
        print(min(length))
    else:
        print(-1)

main(debug=False)
0