Cod sursa(job #527435)

Utilizator darrenRares Buhai darren Data 31 ianuarie 2011 16:05:44
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstring>
#include <fstream>

using namespace std;

char S[1000020];
int N[1000020];
long long D;

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

    fin.getline(S, 1000020);
    fin >> D;

    N[0] = strlen(S);
    for (int i = 1; i <= N[0]; ++i)
        N[i] = S[N[0] - i] - '0';

    long long rest = 0;
    for (int i = N[0]; i >= 1; --i)
    {
        rest *= 10LL;
        rest += (long long)N[i];

        if (rest > D)
            rest %= D;
    }

    rest = (D - rest) % D;

    int now = 1;
    long long Nnow = N[1] + rest;

    while (Nnow >= 10)
    {
        N[now] = Nnow % 10;
        Nnow = N[now + 1] + Nnow / 10;
        ++now;
    }
    N[now] = Nnow;

    N[0] = max(N[0], now);

    for (int i = N[0]; i >= 1; --i)
        fout << N[i];

    fin.close();
    fout.close();
}