1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
perm = [0,1,2,3,4,5,6,7,8,9]
divisors = [1,2,3,5,7,11,13,17]
def swap(i,j):
k = perm[i]
perm[i] = perm[j]
perm[j] = k
result = 0
count,max = 1,3265920
while count < max:
N = len(perm)
i = N - 1
while(perm[i-1] >= perm[i]):
i = i - 1
j = N
while perm[j - 1] <= perm[i -1]:
j = j - 1
swap(i - 1, j - 1)
i+=1
j=N
while(i < j):
swap(i - 1, j - 1)
i+=1
j-=1
divisible = True
for x in range(1,len(divisors)):
num = 100 * perm[x] + 10 * perm[x+1] + perm[x+2]
if num % divisors[x] != 0:
divisible = False
break
if (divisible):
num = 0
for x in range(0,len(perm)):
num = 10*num +perm[x]
result += num
count+=1
print(result)
|