Оператор цикла while паскаль в некоторой стране используются денежные купюры достоинством в 1,2,4,8,16,32 и 64.дано натуральное число n.как наименьшим количеством таких денежных купюр можно выплатить сумму n(указать количесво каждой из используемых для выплаты купюр)? предлагается, что имеется достаточно больше количесво купюр всех достоинство.

bonbino1 bonbino1    3   19.07.2019 21:10    18

Ответы
EvaTV EvaTV  22.09.2020 17:02
Var m : array[0..6] of Integer;
  i,k,N : Integer;
Begin
  For i:=0 to 6 do m[i]:=0;
  Readln(N);
  k:=6;
  While N>0 do
  Begin
    If N>=Power(2,k) then
    Begin
      N:=N-Trunc(Power(2,k));
      Inc(m[k]);
    end else Dec(k);
  end;
  For i:=0 to 6 do Writeln(Power(2,i),'  ',m[i],' шт.');
end.

Еще вариант:
Const
  NN = 7;
  money : array[1..7] of Integer = (1,2,4,8,16,32,64);
Var m : array[1..NN] of Integer;
  i,k,N : Integer;
Begin
  For i:=1 to NN do m[i]:=0;
  Readln(N);
  k:=NN;
  While N>0 do
  Begin
    If N>=money[k] then
    Begin
      N:=N-money[k];
      Inc(m[k]);
    end else Dec(k);
  end;
  For i:=1 to NN do Writeln(money[i],'  ',m[i],' шт.');
end.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика