pythonを勉強して、面白い問題を見て、練習しました.
1036 ワード
0から9までの10個の数は、2つの5桁のaとbを構成することが要求され、aとbを構成する数字は重複せず、a+20085=bである.
実行結果は次のとおりです.
35067,14982 48036,27951 58026,37941 62058,41973 72048,51963 85017,64932
,
n = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
k = 20085
def validate(num: int):
total = num + k
if total > 99999:
return False
s = list(str(total)+str(num))
for i in range(0, 5):
a = s[i]
if s.count(a) > 1:
return False
return True
def cal(base: int, num_list: list, digit: int):
for t in range(0, len(num_list)):
result = base
num_list_copy = num_list.copy()
num = num_list_copy[t]
if (num == 0 or num*math.pow(10, digit) + k > 99999) and digit == 4:
continue
num_list_copy.remove(num)
result += num * int(math.pow(10, digit))
if digit == 0:
if validate(result):
print(result + k, result)
else:
cal(result, num_list_copy, digit - 1)
cal(0, n, 4)
実行結果は次のとおりです.
35067,14982 48036,27951 58026,37941 62058,41973 72048,51963 85017,64932