3170 - Plata 3: Difference between revisions

From Bitnami MediaWiki
Mraa (talk | contribs)
Pagină nouă: ==Cerința== Se consideră n tipuri de bancnote, cu valorile v[1] v[2] ... v[n], ordonate strict crescător. Se cere să se determine o modalitate de a plăti integral o sumă dată S cu bancnotele disponibile, știind că se pot folosi oricâte bancnote de orice tip. ==Date de intrare== Programul citește de la tastatură numerele n și S, apoi valorile v[1] v[2] ... v[n] ale bancnotelor. ==Date de ieșire== Programul va afișa pe ecran n numere, reprezentând o modalitate...
 
Mraa (talk | contribs)
No edit summary
 
Line 25: Line 25:
Există și alte soluții valide.
Există și alte soluții valide.
==Rezolvare==
==Rezolvare==
<syntaxhighlight lang="python3" line="1">
def plata_bancnote(n, S, valori):
def plata_bancnote(n, S, valori):
    rezultat = [0] * n
    suma_ramasa = S


    for i in range(n - 1, -1, -1):
  rezultat = [0] * n
        bancnote_folosite = suma_ramasa // valori[i]
  suma_ramasa = S
        rezultat[i] = bancnote_folosite
  for i in range(n - 1, -1, -1):
        suma_ramasa -= bancnote_folosite * valori[i]
      bancnote_folosite = suma_ramasa // valori[i]
      rezultat[i] = bancnote_folosite
      suma_ramasa -= bancnote_folosite * valori[i]
  return rezultat


    return rezultat
if __name__ == "__main__":


if __name__ == "__main__":
  # Citire date de intrare
    # Citire date de intrare
  n, S = map(int, input().split())
    n, S = map(int, input().split())
  valori = list(map(int, input().split()))
    valori = list(map(int, input().split()))
  # Calcul și afișare rezultat
  rezultat = plata_bancnote(n, S, valori)
  print(*rezultat)


    # Calcul și afișare rezultat
    rezultat = plata_bancnote(n, S, valori)
    print(*rezultat)
python plata_bancnote_flexibil.py
python plata_bancnote_flexibil.py
</syntaxhighlight>

Latest revision as of 18:10, 11 January 2024

Cerința[edit | edit source]

Se consideră n tipuri de bancnote, cu valorile v[1] v[2] ... v[n], ordonate strict crescător. Se cere să se determine o modalitate de a plăti integral o sumă dată S cu bancnotele disponibile, știind că se pot folosi oricâte bancnote de orice tip.

Date de intrare[edit | edit source]

Programul citește de la tastatură numerele n și S, apoi valorile v[1] v[2] ... v[n] ale bancnotelor.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran n numere, reprezentând o modalitate de plată a sumei S. Fiecare număr x[i] va reprezenta numărul de bancnote de valoarea x[i] folosite pentru plata sumei S.

Restricții și precizări[edit | edit source]

1 ≤ n ≤ 6 1 ≤ S ≤ 1000 1 ≤ v[i] ≤ 100 oricare variantă corectă de plată a sumei S va fi luată în considerare pentru toate seturile de date există soluție ==Exemplu==: Intrare

5 375 1 5 10 50 100 Ieșire

5 2 1 1 3

Observații[edit | edit source]

Există și alte soluții valide.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> def plata_bancnote(n, S, valori):

  rezultat = [0] * n
  suma_ramasa = S
  for i in range(n - 1, -1, -1):
      bancnote_folosite = suma_ramasa // valori[i]
      rezultat[i] = bancnote_folosite
      suma_ramasa -= bancnote_folosite * valori[i]
  return rezultat

if __name__ == "__main__":

  # Citire date de intrare
  n, S = map(int, input().split())
  valori = list(map(int, input().split()))
  # Calcul și afișare rezultat
  rezultat = plata_bancnote(n, S, valori)
  print(*rezultat)

python plata_bancnote_flexibil.py </syntaxhighlight>