Cerința
Pentru cadourile pe care Moş Crăciun urmează să le cumpere copiilor cuminţi, Consiliul Polului Nord a alocat suma de S
eureni. Ştiind că în comerţul polar se utilizează n+1
tipuri de bancnote de valori 1
, e
1
, e
2
, e
3
,…, e
n
şi faptul că Moşul trebuie să primească un număr minim de bancnote pentru suma aprobată, să se determine numărul de bancnote din fiecare tip utilizat în plata sumei şi numărul total de bancnote care i s-au alocat.
Date de intrare
Fișierul de intrare eureni.in
conține pe prima linie numerele naturale S n e
.
Date de ieșire
Fișierul de ieșire eureni.out
va conține mai multe linii: pe fiecare linie va fi scrisă valoare unei bancnote folosită în plata sumei S
și numărul de bancnote folosite, separate printr-un spațiu, în ordinea descrescătoare a valorilor bancnotelor folosite. Pe ultima linie se va scrie numai numărul total de bancnote folosite.
Restricții și precizări
1 < S < 2 000 000 000
1 < n < 10
1 < e < 10
- se presupune că există un număr nelimitat de bancnote de fiecare tip
Exemplu
eureni.in
107 4 5
eureni.out
25 4 5 1 1 2 7
Explicație
Sunt 5
tipuri de bancnote, cu valorile: 1
, 5
, 25
, 125
, 625
eureni. Pentru a plăti suma de 107
eureni se folosesc 4
bancnote de 25
eureni, 1
bancnotă de 5
eureni și 2
bancnote de 1
euren, în total 7
bancnote.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema Eureni:
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("eureni.in");
ofstream fout("eureni.out");
int v[20], x[20], S, n , e;
int main()
{
fin >> S >> n >> e;
v[0] = 1;
for(int i = 1 ; i <= n ; i++)
v[i] = v[i-1] * e;
for(int i = n ; i >= 0 ; i --)
{
x[i] = S / v[i];
S %= v[i];
}
S = 0;
for(int i = n ; i >= 0 ; i --)
if(x[i] > 0)
{
fout << v[i] << " " << x[i] << endl;
S += x[i];
}
fout << S << endl;
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #1004 Eureni
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1004 Eureni de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!