Program Armstrong;
uses crt;
var step:array [0..9] of integer;
 n, {исходное данное}
 x, {пробное n-значное число}
 min, {наименьшее n-значное число}
 max,{наибольшее n-значное число}
 summa, {сумма n-x степеней цифр числа x}
 k, l, p: integer;
begin
 write('Введите исходное данное: ');
 read(n);
{заполняется массив step}
 for k:=0 to 9 do
 begin
 step[k]:=k;
 for l:=2 to n do
 step[k]:=step[k]*k
 end;
{находятся наименьшее и наибольшее n-значные числа: min и max}
 min:=1;
 for l:=1 to n-1 do
 min:=min*10;
 max:=min*10-1;
{испытываются все n-значные числа}
 for x:=min to max do
 begin
 p:=x;
 summa:=0;
{находится сумма n-x степеней цифр числа х}
 for l:=1 to n do
 begin
 summa:=summa+step[p mod 10];
 p:=p div 10
 end;
 if summa=x then {x - число Армстронга}
 writeln(x)
 end;
readkey
end.
При входном данном n=3 ЭВМ напечатала такие числа Армстронга: $$153$$ $$370$$ $$371$$ $$407$$


2012-06-24 • Просмотров [ 6178 ]