ну это же легко, например надо выдать 1100:
должна быть структурка которая содержит оставшееся количество купюр, например:
ru50 = 10,
ru100 = 2,
ru500 = 1,
ru1000 = 0,
ru5000 = 1;
далее: считаете к этой сумме от наибольшей купюры сразу с проверкой:
// псевдокод
while( NeedGiveMoneyAmount => ru50) {
if 1000 <= NeedGiveMoneyAmount AND ru1000 > 0 then
приготовить одну 1000ю купюру
continue;
end if;
if 500 <= NeedGiveMoneyAmount AND ru500 > 0 then
приготовить одну 500ю купюру
continue;
end if;
if 100 <= NeedGiveMoneyAmount AND ru100 > 0 then
приготовить одну 100ю купюру
continue;
end if;
if 50 <= NeedGiveMoneyAmount AND ru50 > 0 then
приготовить одну 50ю купюру
continue;
end if;
}
if NeedGiveMoneyAmount > 0 // осталась сдача, нужно решить что делать дальше
elif NeedGiveMoneyAmount == 0 //выдать всё что насчитали
else // ЫЫЫЫ :DD