fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. int monety(int kwota, int sztuki) {
  6. // nominały monet w kolejności od największego
  7. vector<int> nominaly = {20, 10, 5, 2, 1};
  8. int liczba = 0;
  9.  
  10. for(int i = 0; i < nominaly.size(); i++) {
  11. // ile monet danego nominału możemy użyć
  12. int ile = min(kwota / nominaly[i], sztuki - liczba);
  13. kwota -= ile * nominaly[i];
  14. liczba += ile;
  15. if(kwota == 0) break;
  16. }
  17.  
  18. // jeśli nie udało się wydać całej kwoty w dostępnej liczbie monet
  19. if(kwota > 0) return liczba + kwota; // tu zakładamy, że dopłacamy resztę 1-ów
  20. return liczba;
  21. }
  22.  
  23. int main() {
  24. cout << monety(11, 100) << " " << monety(99, 3) << endl;
  25. return 0;
  26. }
Success #stdin #stdout 0.01s 5304KB
stdin
Standard input is empty
stdout
2 42