Страница 1 из 1

Помогите подалуйста решить задачку на Циклы!

Добавлено: 07 дек 2009, 19:50
RiBi7
Покупатель должен заплатить в кассу S р. У него имеются 1, 5, 10, 50, 100, 500, 1000р. Сколько купюр разного достоинства отдаст покупатель, если он начинает платить с самых крупных купюр? Люди добрые спасите))

Re: Помогите подалуйста решить задачку на Циклы!

Добавлено: 08 дек 2009, 04:32
savigm

Код: Выделить всё

int i;
int sum = 1000;

for (i = 1; i <=7; i++) {
    if (sum >= S)
        break;

    if (i % 2)
        sum /= 2;
    else
        sum /= 5;
}
Код написан на Си.
После выхода из цикла в переменной i будет количество купюр, которое необходимо заплатить.

Не забудьте оставить положительный отзыв, если решение подходит.

Re: Помогите подалуйста решить задачку на Циклы!

Добавлено: 08 дек 2009, 11:00
Хыиуду
И что этот код делает? Если ввести S=10000, то он вернет 7, хотя не должен бы.
Вариант на Паскале.

Код: Выделить всё

var s, sum, counter: integer; s5: boolean;
begin
  counter:=0; s5:=false; sum:=1000;
  s:=12345;
  while s>0 do
  begin
    while s>=sum do
    begin
      dec(s,sum); inc(counter);
    end;
    while s<sum do
    begin
       if s5 then sum:=sum div 5 else sum:=sum div 2; s5:=not s5;
    end;
  end;
  writeln(counter);
end.

Re: Помогите подалуйста решить задачку на Циклы!

Добавлено: 08 дек 2009, 19:26
savigm
А-а-а, я подумал что у покупателя по одной купюре и сумма не больше 1666р.

Тогда задача интересней, позже выложу свой вариант на Си.