Представить число в виде суммы точных кубов, содержащей наименьшее число слагаемых

Не по теме:

Задача неоднократно решалась на форуме и даже на других сайтах в интернете, поэтому решений множество на разных языках. Я не люблю копировать чужие решения, немного их менять и выдавать их за свое (хотя, некоторые тут на форуме таким занимаются).

Если вы о моем решении спрашиваете, то выше я написал, что я игнорирую задачу, т.к. она мне не интересна.

Почему? Потому что для натуральных чисел без проблем можно найти такие слагаемые. Даже можно перебрать все возможные варианты и выбрать тот, у кого меньше слагаемых.

Конечно, задачу можно усложнить, если ввести какие-то лимиты по времени или по памяти (обратите внимание, что их по условию нет). Но мне не нравится писать код по каким-то условным лимитам, которые я не в состоянии даже проверить (особенно, это касается времени выполнения, у меня код выполняется за одно время, а на каком-то сайте за другое).

eaa

, вот за что я люблю Wolfram Mathematica - за минуту можешь реализовать любую идею, которая придет в голову:

HaskellВыделить код

| | |
| --- | --- |
| 1 | f[n_] := MinimalBy[IntegerPartitions[n, All, Table[i^3, {i, IntegerPart[CubeRoot[n]]}]], Length] |

f[9] -> {{8, 1}}

f[32] -> {{8, 8, 8, 8}}

f[60] -> {{27, 8, 8, 8, 8, 1}}

Обратите внимание, что для 32 функция выдает правильно, а не {27,1,1,1,1,1}, равно как выдает правильно и для 60, а не {27,27,1,1,1,1,1,1}

Но для больших чисел, будет думать долго и жрать много памяти.