import itertools
num_cases = int(input())
answer_list = []
while num_cases>0:
live_ans = []
nums = int(input())
d1 = int(input())
d2 = int(input())
sample_space= {d1, d2}
for i in itertools.product(sample_space, repeat = nums-1):
if sum(i) not in live_ans:
live_ans.append(sum(i))
else:
pass
live_ans.sort()
answer_list.append(live_ans)
num_cases -= 1
for i in answer_list:
finalans = " ".join(map(str, i))
print(finalans)
Этот код хорошо работает для небольших тестовых примеров, таких как: 1 3 1 2
Но выдает ошибку памяти для таких входов, как: 1 58 69 24
(целые числа, разделенные пробелом, на самом делевведите как одно число на строку, как видно из кода)
Ошибка памяти возникает, когда itertool манипулирует кортежами продуктов, а значение nums огромно (например, 58 во втором случае).Что еще можно сделать?
С постановкой задачи можно ознакомиться здесь: https://www.hackerrank.com/challenges/manasa-and-stones/problem