Var i,k,m,n,ord,a: integer; begin write('k = '); readln(k); ord:=1; a:=1; write('числа Армстронга: '); for i:=1 to k do begin if i>a*10 then begin inc(ord); a:=a*10; end; m:=i; n:=0; repeat n:=n+round(power((m mod 10),ord)); m:=m div 10; until m=0; if n=i then write(i,' '); end; writeln; end.
Answers & Comments
Verified answer
Var i,k,m,n,ord,a: integer;begin
write('k = '); readln(k);
ord:=1; a:=1;
write('числа Армстронга: ');
for i:=1 to k do
begin
if i>a*10 then
begin
inc(ord);
a:=a*10;
end;
m:=i; n:=0;
repeat
n:=n+round(power((m mod 10),ord));
m:=m div 10;
until m=0;
if n=i then write(i,' ');
end;
writeln;
end.
k = 100
числа Армстронга: 1 2 3 4 5 6 7 8 9
k = 10000
числа Армстронга: 1 2 3 4 5 6 7 8 9 153 370 371 407 1634 8208 9474
begin
seqgen(readinteger('Введите k:'), n -> n + 1).Where(f -> (f.ToString.Select
(x -> power(x.toDigit, f.ToString.Length)).Sum) = f).Println;
end.
Пример работы программы:
Введите k: 99999999
1 2 3 4 5 6 7 8 9 153 370 371 407 1634 8208 9474 54748 92727 93084 548834 1741725 4210818 9800817 9926315 24678050 24678051 88593477