Напишите функцию, вычисляющую сумму четвертых степеней цифр этого числа. Используя эту...

0 голосов
35 просмотров

Напишите функцию, вычисляющую сумму четвертых степеней цифр этого числа. Используя эту функцию, напишите программу, выводящую все числа, равные сумме четвертых степеней своих цифр.


Информатика (21 баллов) | 35 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Сумма 4-х степеней N-значного числа не превосходит N * 9^4 < 10000N.
С другой стороны, N-значное число больше 10^(N-2).
Для того, чтобы одно было равно другому, должно выполниться
10^(N - 2) < 10000N, 10^N < N * 10^6.
Так может быть, только если N < 7, поэтому ищем числа среди 1..999999.


Код:
function Sum4Deg(n: integer): integer;
var
  s: integer;
begin
  s := 0;
  repeat
    s := s + sqr(sqr(n mod 10));
    n := n div 10;
  until n = 0;
  Sum4Deg := s;
end;


var
  i: integer;
begin
  for i := 1 to 999999 do
    if i = Sum4Deg(i) then
      writeln(i);
end.

(148k баллов)