Наименьшее число, которое может быть сделано как минимум с k различными слагаемыми, является просто суммой всех чисел от 1 до k . Любое число меньше этого будет иметь меньше слагаемых ... не более k-1 .
У Гаусса есть формула для суммычисла от 1 до k .Это просто k (k + 1) / 2 .
Вам просто нужно найти самое большое k , такое что k (k + 1) / 2<= n </strong>.Из вышесказанного вы знаете, что если k больше, то вы не сможете разделить n на такое количество слагаемых, так что это самый большой ответ.
Также очень просто генерировать k слагаемых, которые добавляют к n - это просто сумма всех чисел от 1 до k-1 , а затем все, что осталось ( n - k (k-1) / 2 ).
Вы можете решить для k напрямую:
k (k + 1) / 2 <= n </strong>
k² + k - 2n <= 0 </strong>
k <= (sqrt (8n + 1) -1) / 2 </strong>
Последний шаг черезквадратичная формула.Поскольку вы хотите максимально возможное значение k , это просто
k = floor ((sqrt (8n + 1) -1) / 2)