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:INTEGER):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.