Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ задача про Число Армстронга

Автор: Наташка 4.05.2007 14:20

Задача -
Число Армстронга – такое число из k цифр, для которого сумма k-х степеней его цифр равна самому числу, например: 153=13+53+33. Найти все числа Армстронга не более чем из четырех цифр.

Что у меня неправильно?

Код
uses crt;
Const
    MIN_DIGITS = 1;
    MAX_DIGITS = 4;
Var
    power: array [0..9] of integer;
    pow10: integer;
    num: integer;
    mn: integer;
    mx: integer;
    v1: integer;
    v2: integer;
    i: integer;
    j: integer;
    k: integer;
Begin


  for k:=MIN_DIGITS to MAX_DIGITS do
  begin
    for i:=0 to 9 do
    begin
        power[i]:= pow(i,k);
    end;

    mn := pow(10,k-1);
    mx := mn*10;

    for v1:=mn to mx-1 do
    begin
      v2    := 0;
      pow10 := pow(10,k);
      num   := v1;
      while pow10 <> 1 do
      begin
        pow10 := pow10 div (10);
        j     := num / pow10;
        num   := num - (j*pow10);
        v2    := v2 + (power[j]);
        if v2 > v1 then break;
      end;
      
      if v2=v1 then writeln(v1);
    end;
  end;

End.


заранее спасибо

Автор: volvo 4.05.2007 14:56

Наташа, я же не просто так сделал это: http://forum.pascal.net.ru/index.php?s=&showtopic=3916&view=findpost&p=34513
, как ты думаешь?