Cod sursa(job #1018229)

Utilizator grgcucu4e5hrbedrbsadvas grgcucu Data 29 octombrie 2013 08:46:49
Problema Next Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <fstream>
#include <string>
#include <vector>
using namespace std;

void MARIFICATION(string &mic, vector<short> &mare);
void divideSmall(vector<short> &mare, int mic);
void multiplySmall(vector<short> &mare, int mic);
void rezulta(vector<short> r);

int main()
{
    ifstream fin("next.in");

    string n;
    fin>>n;
    vector<short> nr;
    MARIFICATION(n, nr);

    int d;
    fin>>d;
    divideSmall(nr, d);
    multiplySmall(nr, ++d);

    rezulta(nr);

    fin.close();
    return 0;
}

void divideSmall(vector<short> &mare, int mic)
{
    int i, t = 0;
    for(i = mare[0]; i > 0; i--, t%=mic)
        mare[i] = (t = t * 10 + mare[i]) / mic;
    for(; mare[0] > 1 && !mare[mare[0]]; mare[0]--);
}

void multiplySmall(vector<short> &mare, int mic)
{
    int i, t = 0;
    for(i = 1; i <= mare[0] || t; i++, t /= 10)
        mare[i] = (t += mare[i] * mic) % 10;
    mare[0] = i - 1;
}

void MARIFICATION(string &mic, vector<short> &mare)
{
    mare.push_back(mic.length());
    for(int i = mic.length()-1; i>=0; i--)
        mare.push_back(mic[i]);
}

void rezulta(vector<short> r)
{
    ofstream fout("next.out");
    for(int i = r[0]; i >= 1; i--)
        fout<<r[i];
    fout.close();
}