結果

問題 No.3 ビットすごろく
ユーザー kuromookkuromook
提出日時 2016-06-02 22:37:15
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
MLE  
実行時間 -
コード長 997 bytes
コンパイル時間 299 ms
コンパイル使用メモリ 12,800 KB
実行使用メモリ 518,496 KB
最終ジャッジ日時 2024-10-08 06:03:08
合計ジャッジ時間 7,139 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 29 ms
11,008 KB
testcase_01 AC 30 ms
10,880 KB
testcase_02 AC 30 ms
10,880 KB
testcase_03 MLE -
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 = []
	for a in ary:
		b =list(a) 
		last = a[-1]
		if last in dic:
			el = dic[last]
			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 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):
		tree = update_tree(val,sugo_map,tree)
		if debug:
			print(tree)
	# tree length 
	length = [len(el) for el in tree if el[-1] == val]
	if len(length) > 0:
		print(min(length))
	else:
		print(-1)

main()
0