-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path43. Sub-string divisibility.py
61 lines (47 loc) Β· 1.58 KB
/
43. Sub-string divisibility.py
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import itertools
allCombinations = list(itertools.permutations(range(10)))
allCombinations = allCombinations[362880:] #Removing all numbers starting with zero
allCombinations = [i for i in allCombinations if ((10*i[7] + i[8] - 5*i[9]) % 17 == 0)] #17
allCombinations = [i for i in allCombinations if ((10*i[6] + i[7] + 4*i[8]) % 13 == 0)] #13
allCombinations = [i for i in allCombinations if (i[5] - i[6] + i[7]) % 11 == 0] #11
allCombinations = [i for i in allCombinations if (((10*i[4] + i[5] - 2*i[6]) % 7 == 0))] #7
allCombinations = [i for i in allCombinations if (i[5] % 5 == 0)] #5
allCombinations = [i for i in allCombinations if (sum(i[2:5]) % 3 == 0)] #3
allCombinations = [i for i in allCombinations if (i[3] % 2 == 0)] #2
requiredNumbers = [int(''.join(map(str, i))) for i in allCombinations]
print((requiredNumbers))
print(sum(requiredNumbers))
#print((allCombinations]))
'''
i = 0
while i < len(allCombinations[:10**5]):
if allCombinations[i][3] % 2 != 0:
allCombinations.remove(allCombinations[i])
continue
i += 1
print(len(allCombinations))
'''
#def multiples(n, startingFrom, upto):
# return [n*i for i in range(startingFrom//n + 1, upto//n + 1)]
#
#seventeens = multiples(17, 100, 1000)
#thirteens = multiples(13, 100, 1000)
#elevens = multiples(11, 100, 1000)
#sevens = multiples(7, 100, 1000)
#
#i = 0
#while i < len(sevens):
# if int(str(sevens[i])[1]) % 5 != 0:
# sevens.remove(sevens[i])
# continue
# i += 1
#
#print(len(sevens))
#
#i = 0
#sevenString = list(map(str, sevens))
#while i < len(thirteens):
# for j in sevenString:
# if i != j[:2]
# continue
# i += 1