Предмет: Информатика,
автор: МишкаМашки
ПАСКАЛЬ/ 9 КЛАСС
Представьте данное число n в виде суммы двух кубов.
Входные данные
Программа получает на вход одно натуральное число n(n <= 1028).
Выходные данные
Программа должна вывести 2 целых неотрицательных числа, сумма кубов которых равна n. Если это невозможно, выведите строку impossible.
Ответы
Автор ответа:
0
var
n,i,j:integer;
fexit:boolean;
begin
Read(n);
fexit:=false;
for i:=1 to 10 do begin
for j:=1 to 10 do
if i*i*i+j*j*j=n then begin fexit:=true; break end;
if fexit then break
end;
if fexit then Writeln(i,' ',j)
else Writeln('impossible')
end.
Пример выполнения
637
5 8
n,i,j:integer;
fexit:boolean;
begin
Read(n);
fexit:=false;
for i:=1 to 10 do begin
for j:=1 to 10 do
if i*i*i+j*j*j=n then begin fexit:=true; break end;
if fexit then break
end;
if fexit then Writeln(i,' ',j)
else Writeln('impossible')
end.
Пример выполнения
637
5 8
Автор ответа:
0
Пожалуйста
Автор ответа:
0
"Да и глупо крутить цикл до n, если любое из пары чисел не может превыcить кубического корня из n" Действительно, мы же не учитываем, что 11^3 больше 1028, его банально не пустит в внешний цикл. А power(j,3)+power(i,3)<=n в внутреннем "нисколько" не сокращает количество шагов относительно вашего полного прохода во всем возможным значениям.
Похожие вопросы
Предмет: Математика,
автор: kazuralera
Предмет: Математика,
автор: vinitskanna23
Предмет: Литература,
автор: romanikolchuk
Предмет: Алгебра,
автор: zhsh3
Предмет: Математика,
автор: marmeladka129