Python

Python, помогите, пожалуйста

Слава и Артем играют в игру. Слава загадывает три числа и хочет чтобы Артем их угадал, при это Слава дает подсказку, называет сумму и произведение этих трех чисел. Напишите программу, которая поможет Артему угадать числа Славы.

Входные данные
Вводится два целых числа сумма и произведение - каждое на отдельной строке. Оба числа не превышают 100.

Выходные данные
Выводится три числа которые загадал Слава от меньшего к большему или строка «Таких чисел не существует».
....у .лан!!!!
....у .лан!!!!
39
Совершенно необязательно перебирать 1 млн чисел (100 × 100 × 100 будет именно столько).

Если рассматривать только положительные значения, то достаточно двух вложенных циклов:
1) Первое число (a) - от 1 до [s/3] или ∛p, смотря, что меньше.
2) Второе число (b) - от a до [(s - a)/2] или √(p/a), смотря, что меньше.
где s - заданная сумма чисел, p - их произведение.
А третье число всегда равняется s - a - b, и для его нахождения никакие циклы вовсе не нужны. Таким образом, для суммы 100 мы переберём не более 50 вариантов, а для меньших сумм - ещё меньшее количество.

Функциональный вариант поиска по описанному алгоритму выглядит примерно так:
 from itertools import takewhile
def gettriad(s, p):
return ((None, (0, 0, 0))[p == 0] if s == 0
else (0, 0, s) if p == 0
else next(
((a, b, s - a - b)
for a in takewhile(lambda x: x * x * x
Владимир Ворончихин
Владимир Ворончихин
87 571
Лучший ответ
 a = int(input()) 
b = int(input())
x = False
for c in range(101):
if x == True:
break
for d in range(101):
for f in range(101):
if c+d+f == a and c*d*f == b:
print(c, d, f)
x = True
break
if x == False:
print("Не-а")
Володя Васильев
print(c, d, f)
Чтобы отсортировать можно написать print(*sorted([c, d, f])) (в зависимости от того, в каком ты классе), либо каким нибудь for с if