PROGRAM SoAmstrong;
USES crt;
VAR g: INTEGER;
FUNCTION lt(x,y:INTEGER):LONGINT;
VAR i: BYTE;k: LONGINT;
BEGIN
k:=x;
IF y=0 THEN lt:=1
ELSE
FOR i:=1 TO y-1 DO
k:= x * k;
lt:=k;
END;
FUNCTION Chso(x,y:LONGINT):BYTE;
VAR k: BYTE;
BEGIN
k:=(x MOD lt(10,y)) DIV (lt(10,y) DIV 10);
chso:=k;
END;
FUNCTION Kiemtra(x,l:LONGINT):BOOLEAN;
VAR y: BOOLEAN; s,i: LONGINT;
BEGIN
s:=0;
FOR i:= l DOWNTO 1 DO
s:= lt(chso(x,i),l)+s ;
IF s = x THEN y := TRUE ELSE y:= FALSE;
Kiemtra:=y;
END;
PROCEDURE Inra;
VAR a,b,n : LONGINT;
BEGIN
FOR n:= 3 TO 6 DO BEGIN
b:=(10*lt(10,n-1)-1);
FOR a:=lt(10,n-1) TO b DO
IF Kiemtra(a,n) THEN
BEGIN
Writeln(a);
g:=g+1;
END;
END;
END;
BEGIN
Inra;
Writeln;
Write('So luong so Amstrong la ',g:3);
Readln;
END.