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

Определить наименьшее количество купюр

Добавлено: 19 мар 2015, 14:29
cotypan
Пусть имеются 10,20,50,100,200,500 гривень.Необходимо определить наименьшое количество купюр, которые необходимо использовать чтобы выдать Sum рублей.Если же сумму выдать нельзя то вывести -1.
Получается что если я ввожу сумму 67, то мне не выводится "-1".Все суммы которые невозможно вывести у меня не могут быть обозначены -1.А для сумм которые могут выданы с помощью данных купюр у меня выводится правильно наименьшее количество купюр.
То есть для 550, я получаю правильный ответ 2.

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

#include <iostream>
#include <iostream>
using namespace std;
 
]int main(){
int arrcur[6]={10,20,50,100,200,500};
int m = 0,ost,sum,cnt,i;
//while(( m < T ))
cin>>sum;//ввод суммы
ost=sum;//Отстаток_к_выдаче = сумме;
cnt=0;//количество купюр
while(ost>0){
  for(i=5;i>=0;--i){
   if( ost / arrcur[i] > 0) {
   cnt = cnt + ost/arrcur[i];
   ost = ost % arrcur[i];
   }
}
}
if(ost!=0)
    cout<<"-1";
else cout<<cnt;
return 0;
}

Re: Определить наименьшее количество купюр

Добавлено: 19 мар 2015, 15:35
somewhere
Потому что для тех сумм, которые нельзя разложить полностью - при выходе из for остаток больше 0. Соответственно while будет крутиться до бесконечности, ибо остаток больше не изменится и выполнение никогда не дойдет до cout
ИМХО while тут лишний, достаточно одного прохода цикла for

Re: Определить наименьшее количество купюр

Добавлено: 19 мар 2015, 17:26
cotypan
Спасибо огромное!Заработало!