Число, состоящее из n (n>1) цифр, называется числом Армстронга, если сумма его цифр, возведенных в n-ю степень, равна самому этому числу. Например, числами Армстронга являются 153 и 1634, так как $$153=1^{3}+5^{3}+3^{3};$$ $$1634=1^{4}+6^{4}+3^{4}+4^{4}.$$ Составим программу, которая будет находить все n-значные числа Армстронга (n - входное данное, причем n<10).
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 • Просмотров [ 12758 ]