Rezolvare completă PbInfo #1004 Eureni

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, e1, e2, e3,…, en ş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 Adresa de email.

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!