👤

pbinfo #1004 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 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


Răspuns :

#include <fstream>
#include <cmath>

using namespace std;

ifstream fin("eureni.in");
ofstream fout("eureni.out");

unsigned short int i,e,k,n,l,d;
int S;
double a[12];

int main()
{

    fin >> S >> n >> e;

    k=n;

    for (i=1;i<=n+1;i++)
    {
        a[i]=pow(e,k);
        k--;
    }

    i=1;

    while(S!=0)
    {
        if(a[i]<=S)
        {
            d++;
            l++;
            S-=a[i];
            if(S==0) fout<< a[i] << " " << l << endl;
        }
        else
        {
            if (l!=0) fout << a[i] << " " << l << endl;
            l=0;
            i++;
        }
    }

    fout << d << endl;

    return 0;
}