решить на паскале! Известно, что любое натуральное число можно представить в виде суммы не более чем четырех квадратов натуральных чисел. Вася решил придумать аналогичное утверждение для кубов - он хочет узнать, сколько кубов достаточно для представления любого числа. Его первая рабочая гипотеза - восемь.
Выяснилось, что почти все чиcла, которые Вася смог придумать, представляются в виде суммы не более чем восьми кубов. Однако число 239, например, не допускает такого представления. Теперь Вася хочет найти какие-либо другие такие числа, а также, возможно, какую-либо закономерность в представлениях всех остальных чисел, чтобы выдвинуть гипотезу относительно вида всех чисел, которые не представляются в виде суммы восьми кубов.
Васе написать программу, которая проверяла бы, возможно ли представить данное натуральное число в виде суммы не более чем восьми кубов натуральных чисел, и если это возможно, то находила бы какое-либо такое представление.
Входные данные
Вводится натуральное число N <= 2*109.
Выходные данные
Требуется вывести не более восьми натуральных чисел, кубы которых в сумме дают N. Если искомого представления не существует, то в выходной файл необходимо вывести слово IMPOSSIBLE.
Примеры
входные данные
239
выходные данные
IMPOSSIBLE
входные данные
17
выходные данные
2 2 1
```
program Cubes;
var
N, i, j, k, l: integer;
flag: boolean;
begin
readln(N);
flag := false;
for i := 1 to trunc(power(N, 1/3)) do
begin
for j := 1 to trunc(power(N - i*i*i, 1/3)) do
begin
for k := 1 to trunc(power(N - i*i*i - j*j*j, 1/3)) do
begin
for l := 1 to trunc(power(N - i*i*i - j*j*j - k*k*k, 1/3)) do
begin
if i*i*i + j*j*j + k*k*k + l*l*l = N then
begin
flag := true;
writeln(i, ' ', j, ' ', k, ' ', l);
break;
end;
end;
if flag then
break;
end;
if flag then
break;
end;
if flag then
break;
end;
if not flag then
writeln('IMPOSSIBLE');
end.
```
Основная идея решения заключается в переборе всех возможных комбинаций кубов натуральных чисел и проверке, равна ли их сумма заданному числу N.
Для этого мы использовали вложенные циклы: первый цикл перебирает значения i от 1 до кубического корня из N, второй цикл - от 1 до кубического корня из (N - i^3), третий цикл - от 1 до кубического корня из (N - i^3 - j^3) и так далее.
На каждом шаге мы проверяем, равна ли сумма кубов i^3, j^3, k^3 и l^3 заданному числу N. Если равна, то мы выводим значения i, j, k и l, и устанавливаем флаг flag в значение true.
Если флаг остается равным false после окончания всех циклов, значит, искомое представление не существует, и мы выводим слово "IMPOSSIBLE".
Надеюсь, это решение понятно и полезно для вас. Если у вас есть еще вопросы, не стесняйтесь задавать!