Перебор с суммированием?
Фтопку перебор с возвратом и генетические алгоритмы.n = 4600
dp = [''] * (n + 1)
dp[0] = '0'
for step in 256, 304, 397, 465, 477, 497:
    for i in range(n - step, -1, -1):
        if dp[i]:
            for j in range(i + step, n + 1, step):
                if not dp[j]:
                    dp[j] = f'{dp[i]}+{step}*{(j - i) // step}'
print(dp[-1][2:] if dp[-1] else 'извини, не смогла')
Вам нужен перебор с возвратом. Можно так же попробовать упороться в генетические алгоритмы. :)