В общем задачка известная, но есть проблема — на сайте с заданиями не могу пройти тест по времени — слишком долго выполняется. Дело в том, что делаю простым перебором всех возможных комбинаций (грубо говоря брут-форс), а нужно как-то сузить рамки поиска.
Задание:
нужно найти в числа в последовательности, произведение которых равно сумме всех элементов последовательности без этих двух чисел. Пример:
26 → нужные числа 15 и 21 sum([x for x in range(27) if x not in [15, 21]]) == 351 15 * 21 = 351На данный момент код такой:
def func(n):
lst = []
rsum = (n * (n + 1)) / 2
for i in range(n + 1):
for j in range(n + 1, 0, -1):
if i * j == rsum - i - j:
lst.append((i, j))
return lst
P.S. Это не лабораторная в школе, задание из одного онлайн задачника.