Производим обратные действия: имея команды "разделить на 3", "разделить на 2" и "отнять 1", сделать из 84 львов 1.
Поскольку нам нужно минимальное количество действий, будем пробовать команды именно в том порядке, в котором они указаны выше, только сначала проверяем, можем ли мы получить число, делящееся на 3 без остатка, отняв только 1.
1) 84 делится на 3 без остатка, результат - 28.
2) Ближайший делитель 3 к 28 - это 27, получить его можем в одну команду "отнять 1".
from random import random
N = 10
a = []
for i in range(N):
b = int(random() * 50)
a.append(b)
print(a)
min = 101
for i in range(N-1):
s = a[i]+a[i+1]
if (s < min) and (s % 2 == 1):
min=s
print(min)
Пример:[41, 35, 16, 7, 29, 9, 16, 28, 10, 6]
23
2)
from random import random
N = 10
a = []
for i in range(N):
b = int(random() * 50)-25
a.append(b)
print(a)
k = 0
for i in range(N-1):
p = a[i]*a[i+1]
s = a[i]+a[i+1]
if (p % 2 != 0) and (s > 0):
k = k+1
print(k)
Пример:[11, 23, 12, -16, 21, 15, -11, -10, 10, 17]
3
Поскольку нам нужно минимальное количество действий, будем пробовать команды именно в том порядке, в котором они указаны выше, только сначала проверяем, можем ли мы получить число, делящееся на 3 без остатка, отняв только 1.
1)
84 делится на 3 без остатка, результат - 28.
2)
Ближайший делитель 3 к 28 - это 27, получить его можем в одну команду "отнять 1".
3) 27 / 3 = 9
4) 9 / 3 = 3
5) 3 / 3 = 1
ответ: 5 команд.