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

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
RiBi7
Сообщения: 1
Зарегистрирован: 07 дек 2009, 19:42

Покупатель должен заплатить в кассу S р. У него имеются 1, 5, 10, 50, 100, 500, 1000р. Сколько купюр разного достоинства отдаст покупатель, если он начинает платить с самых крупных купюр? Люди добрые спасите))
savigm
Сообщения: 6
Зарегистрирован: 08 дек 2009, 03:24
Откуда: г. Зеленоград
Контактная информация:

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

int i;
int sum = 1000;

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

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

Не забудьте оставить положительный отзыв, если решение подходит.
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

И что этот код делает? Если ввести 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.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
savigm
Сообщения: 6
Зарегистрирован: 08 дек 2009, 03:24
Откуда: г. Зеленоград
Контактная информация:

А-а-а, я подумал что у покупателя по одной купюре и сумма не больше 1666р.

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