Паскаль! Натуральное число называется числом Армстронга, если сумма цифр числа,...

0 голосов
209 просмотров

Паскаль!
Натуральное число называется числом Армстронга, если сумма цифр числа, возведенных в K -ю степень (где K – количество цифр в числе) равна самому числу. Например,

153 = 1^ 3 + 5^ 3 + 3^ 3 .

Напишите программу, которая находит все числа Армстронга на отрезке [ a , b ] .

Входные данные
Входная строка содержит два натуральных числа – значения a и b , разделённых пробелами. Гарантируется, что a ≤ b .

Выходные данные
Программа должна вывести в одну строчку все числа Армстронга на отрезке [ a , b ] , разделив их пробелами. Если таких чисел нет, программа должна вывести число -1.
У меня программа написана, но она просто выводит все числа Армстронга, помогите учесть промежуток от a до b и если таких чисел нет то вывести -1
var
i,l,k,a,b,c,s,e,g,f,x,h,j:integer;
begin
for i:=100 to 9999 do
begin
l:=i;
while l<>0 do
begin
l:=l div 10;
k:=k+1;
end;
if k=3 then
begin
a:=i mod 10;
b:=i div 100;
c:=i div 10 mod 10;
s:=a*a*a+b*b*b+c*c*c;
if i=s then
write(i,' ');
end
else
begin
e:=i mod 10;
g:=i div 10 mod 10;
f:=i div 100 mod 10;
x:=i div 1000;
h:=f*f*f*f+g*g*g*g+e*e*e*e+x*x*x*x;
if i=h then
write(i,' ');
end;
k:=0;
end;
end.


Информатика (543 баллов) | 209 просмотров
0

сделаю за 10 рублей

Дан 1 ответ
0 голосов

Program Project1;
var
  a,b: integer;
  i,j,k,
  ci,
  si,mi,
  errkod: integer;
  sti: string;
  flag: Boolean;
begin
  Readln(a,b);
  flag:=false;
  for i:=a to b do
  begin
    str(i, sti);
    si:=0;
    for j:=1 to Length(sti) do
    begin
      val(sti[j],mi,errkod);
      ci:=1;
      for k:=1 to Length(sti) do
        ci:=ci*mi;
      si:=si+ci;
    end;
    if si=i then
    begin
      write(si,' ');
      flag:=true
    end;
  end;
  if not flag then write(-1);
  Readln;
 end.


(2.3k баллов)