- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
'''
1. Прибавить 1
2. Прибавить 3
3. Прибавить 7
Программа для исполнителя – это последовательность команд. Сколько существует программ, для которых при исходном числе 13 результатом является число 31?
Все пары чисел траектории вычислений должны быть взаимно простыми (под парой подразумевается два подряд идущих числа).
Например, из числа 24 командой 2 (+3) нельзя перейти в число 27, потому как оба эти числа делятся на 3.
А из числа 25 можно перейти в 28., т.к. для этих чисел нет общих простых делителей, т.е. числа взаимно простые.
'''
def f(x, y):
if x == 13:
return f(x + 1, y) + f(x + 3, y) + f(x + 7, y)
a = set()
b = set()
c = set()
d = set()
### ВОТ ЭТА ЗАЛУПА ЗАМЕНЯЕТСЯ 1 СТРОЧКОЙ
if x >= y:
return x == y
for i in range(1, x+1):
if x % i == 0:
a.add(i)
for p in range(1, x+1 + 1):
if (x+1) % p == 0:
b.add(p)
for o in range(1, x+1 + 3):
if (x+3) % o == 0:
c.add(o)
for r in range(1, x+1 + 7):
if (x+7) % r == 0:
d.add(r)
if len(a & b) == 1 and (list(a & b))[0] == 1:
if len(a & c) == 1 and (list(a & c))[0] == 1:
if len(a & d) == 1 and (list(a & d))[0] == 1:
return f(x + 1, y) + f(x + 3, y) + f(x + 7, y)
if len(a & b) == 1 and (list(a & b))[0] == 1:
if not(len(a & c) == 1 and (list(a & c))[0] == 1):
if len(a & d) == 1 and (list(a & d))[0] == 1:
return f(x + 1, y) + f(x + 7, y)
if len(a & b) == 1 and (list(a & b))[0] == 1:
if len(a & c) == 1 and (list(a & c))[0] == 1:
if not(len(a & d) == 1 and (list(a & d))[0] == 1):
return f(x + 1, y) + f(x + 3, y)
if not(len(a & b) == 1 and (list(a & b))[0] == 1):
if len(a & c) == 1 and (list(a & c))[0] == 1:
if len(a & d) == 1 and (list(a & d))[0] == 1:
return f(x + 3, y) + f(x + 7, y)
if not(len(a & b) == 1 and (list(a & b))[0] == 1):
if not(len(a & c) == 1 and (list(a & c))[0] == 1):
if len(a & d) == 1 and (list(a & d))[0] == 1:
return f(x + 7, y)
if not(len(a & b) == 1 and (list(a & b))[0] == 1):
if len(a & c) == 1 and (list(a & c))[0] == 1:
if not(len(a & d) == 1 and (list(a & d))[0] == 1):
return f(x + 3, y)
if len(a & b) == 1 and (list(a & b))[0] == 1:
if not(len(a & c) == 1 and (list(a & c))[0] == 1):
if not(len(a & d) == 1 and (list(a & d))[0] == 1):
return f(x + 1, y)
if not(len(a & b) == 1 and (list(a & b))[0] == 1):
if not(len(a & c) == 1 and (list(a & c))[0] == 1):
if not(len(a & d) == 1 and (list(a & d))[0] == 1):
return x
return 0
print(f(13, 31))
Комментарии (0) RSS
Добавить комментарий