Помощь - Поиск - Пользователи - Календарь
Полная версия: Кв. трехзначного числа равный кубу суммы его цифр
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
ins
Необходимо найти квадрат трехзначного числа равный кубу суммы его цифр.
Все способы расчленения числа на цифры с последующими вычислениями дают неправильный результат.
Все программы выдают: 448! НО калькулятор показвает что, 448^2=200704, а (4+4+8)^3=4096.
Поиск использовал. Предложенная mj программа также выдает 448.
В чем цимус?
мисс_граффити
что за компилятор?
может, дело в банальном переполнении? ты же, наверное, integer используешь...
volvo
Ссылку на программы, которыми проверял, приведи, ибо моя программа выдает, что такого числа просто НЕТ:
var i, i1, i2, i3: longint;
begin
for i1 := 1 to 9 do
for i2 := 0 to 9 do
for i3 := 0 to 9 do begin
i := 100*i1 + 10*i2 + i3;
if sqr(i) = (i1 + i2 + i3)*sqr(i1 + i2 + i3) then
writeln(i1, i2, i3)
end;
end.
Что я делаю не так?
ins
2 volvo
У меня точно такая-же программа.
При использвании integer выдает 448. Тут явное переполнение. Если использовать longint, то не находит. Оно и понято, ведь квадрат трехзначного чиста растет быстрее куба суммы. Пределы, соответсвенно, ~1 000 000 и ~ 20 000.

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

Всем спасибо. ©losed??

Пример mj
Код
program P2;
var
d, u: Word;
begin
writeln('');
readln(d);
if (d<100) or (d>999) then
   writeln('Error')
else begin
   u := (d div 100)+(d div 10 mod 10)+(d mod 10);
   if (d*d)=(u*u*u) then writeln('da')
   else writeln('NET');
end;
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.