46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
|
|
import time
|
|
time.clock()
|
|
|
|
def check_3(result, num, num_set):
|
|
for p in num_set:
|
|
if 0 == int(p + num[:2]) % 3:
|
|
last_num = ''.join(list(num_set - set(p)))
|
|
result.append(int(last_num + p + num))
|
|
result.append(int(last_num[::-1] + p + num))
|
|
|
|
def check_5(result, num, num_set):
|
|
for p in num_set:
|
|
if 0 == int(p) % 2:
|
|
check_3(result, p + num, num_set - set(p))
|
|
|
|
def check_7(result, num, num_set):
|
|
for p in num_set:
|
|
if 0 == int(p + num[:2]) % 7:
|
|
check_5(result, p + num, num_set - set(p))
|
|
|
|
def check_11(result, num, num_set):
|
|
for p in '05':
|
|
if 0 == int(p + num[:2]) % 11:
|
|
check_7(result, p + num, num_set - set(p))
|
|
|
|
def check_13(result, num, num_set):
|
|
for p in num_set:
|
|
if '0' == p or '5' == p:
|
|
continue
|
|
if 0 == int(p + num[:2]) % 13:
|
|
check_11(result, p + num, num_set - set(p))
|
|
|
|
def check_17():
|
|
result = []
|
|
for n in range(136, 1000, 17):
|
|
num = str(n)
|
|
if '0' in num or '5' in num:
|
|
continue
|
|
if len(num) == len(set(num)):
|
|
check_13(result, num, set('1234567890') - set(num))
|
|
return result
|
|
|
|
print(sum(check_17()))
|
|
print(time.clock())
|