• Паскаль!
    Натуральное число называется числом Армстронга, если сумма цифр числа, возведенных в 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.

Ответы 1

  • 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.
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years