Problem z zadaniem (Tablice i pętle)

0

Witam. Mam problem z zadaniem, może ktoś ma pomysł jak zacząć. Wiem, że trzeba użyć pętli i być może zapisać wyniki do pliku. Jeżeli ktoś ma jakiś pomysł proszę się nim podzielić :).

Treść zadania: Bankomat ma dyspozycji banknoty 20, 50 i 100 zł. Wypisz wszystkie możliwe sposoby wypłaty podanej kwoty.

PS. Podana kwota może być dość duża i program musi wypisać wszystkie możliwości jej wypłaty. Jak się za to zabrać?

0

Na początku możnaby podzielić tą liczbę(przyjmę że ta liczba to "a")na dwie:

  1. całość z dzielenia a / 100(ilość setek w a)
  2. reszta z dzielenia a / 100
    Z resztą sprawa jest prosta gdyż zawsze możliwa jest tylko 1 kombinacja:
    reszta 50
    reszta 20
    reszta 70(banknoty 50 i 20)
    reszta 90(banknoty 50,20 i 20
    reszta 40(20+20)
    reszta 60(20+20+20)
    Jeśli reszta jest inna program powinien Od razu wywalać błąd.

Trudniej jest natomiast z całościa
Jeśli całość byłaby równa 1 możliwe są 3 kombinacje:
20zł5
50zł
2
100zł1
Jeśli całość byłaby równa 2 możliwe jest 6 kombinacji:
20zł
5+20zł5
20zł
5+50zł2
20zł
5+100zł
50zł2+50zł2
50zł2+100zł1
100zł1+100zł1

Nie wiem natomiast ile możliwych jest kombinacji gdy całość byłaby równa n.
Jeśli ktoś widzi bład to niech mnie poprawi gdyż dopiero ucze się programować. Cieszę się że mogłem ci w jakiś sposób pomóc:D.

0

Najprosciej -> rekurencja ;]

0

przy trzech dobrze określonych nominałach, to wystarczą dwie proste pętle for. Pierwsza niech iteruje po ilości 100, a druga po ilości 50 (parzystej lub nieparzystej ilości zależnie od kwoty docelowej).

PS. Temat powinien iść do kosza za beznadziejny tytuł. Jak prosisz o pomoc w zadaniu ze SPOJ-a (lub innego tego typu serwisu) to zawsze dawaj linka do niego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1