Вообще я так еще подумал, было бы неплохо добавить купюрам веса, если 100 очень много то и вес у них будет больше и мы будем избавляться от них в приоритете, потому что нам нужно не только выдать минимально возможное количество купюр но и избежать такой ситуации, когда при следующем запросе у нас не хватит больших купюр и придется выдавать кучу мелочи
Например, первый запрос 700 - мы выдали 500 и и два по 100, а следующий запрос будет в 2000 и мы будем выдавать 500 и кучу мелочи, потому что 500 у нас изначально мало, а 100 очень много
В целом хорошая задача, можно много интересных условий в неё добавить и разных алгоритмов понаписать