Cod sursa(job #2679743)

Utilizator Razvan48Capatina Razvan Nicolae Razvan48 Data 1 decembrie 2020 13:29:51
Problema Next Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <fstream>
#include <string>

using namespace std;

const int NMAX = 1000000;

string numar;
long long int cifre[1 + 10 + NMAX];

int main()
{
    ifstream in("next.in");
    ofstream out("next.out");
    long long int d;

    in >> numar >> d;

    for (int i = numar.size() - 1; i >= 0; i--)
    {
        cifre[i] = numar[numar.size() - 1 - i] - '0';
    }

    long long int parte = 0;

    for (int i = numar.size() - 1; i >= 0;)
    {
        while (i >= 0 && parte < d)
        {
            parte = parte * 10 + cifre[i];
            i--;
        }
        parte = parte - (parte / d) * d;
    }

    if (parte != 0)
    {
        d = d - parte;
    }
    else
    {
        d = 0;
    }

    cifre[0] += d;

    long long int minte = 0;

    for (int i = 0; i < numar.size(); i++)
    {
        cifre[i] += minte;
        minte = 0;
        minte += cifre[i] / 10;
        cifre[i] = cifre[i] % 10;
    }

    int nrCif = numar.size() - 1;

    while (minte > 0)
    {
        nrCif++;
        cifre[nrCif] = minte % 10;
        minte = minte / 10;
    }

    for (int i = nrCif; i >= 0; i--)
    {
        out << cifre[i];
    }

    return 0;
}