Напишите функцию, вычисляющую сумму четвертых степеней цифр этого числа. используя эту функцию, напишите программу, выводящую все числа, равные сумме четвертых степеней своих цифр.
Сумма 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.
1. В приведенном коде ошибка. Не хватает ";" в третьей строке снизу. 2. Немного изменим ваш код и получим искомое значение x Искомое число х = 16293
var x, y, a, b, k: integer;
begin k:=10000; repeat x:=k; a := 0; b := 0; y := 1; while x > 0 do begin if (x mod 10) mod 2 = 0 then a := a * 10 + x mod 10 else begin y := y * 10; b := b * 10 + x mod 10 end; x := x div 10 end; a := a * y + b; k := k + 1; until a = 26391; writeln(a:8, k-1:8); end.
// PascalABC.NET 3.0, сборка 1144 от 16.01.2016 begin var n:=ReadInteger('n='); var a:=ArrRandom(n,-50,50); Writeln('Исходный массив'); a.Println; var se:=a.Where(x->x mod 3=0); if se.Count=0 then Writeln('В массиве нет элементов, кратных трем') else begin var b:=se.Max; var i:=0; while a[i]<>b do Inc(i); if i=n-1 then Writeln('Максимальный элемент - последний') else begin Writeln('Результирующий массив'); a[i+1]:=abs(a.Where(x->x<0).Sum); a.Println end end end.
С другой стороны, 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.