Cod sursa(job #2305715)

Utilizator andreiomd1Onut Andrei andreiomd1 Data 20 decembrie 2018 21:48:46
Problema Next Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("next.in");
ofstream g("next.out");

constexpr int NMAX=1e6+5;

int A[NMAX], N, i, B[NMAX], ANS[NMAX], T;

long long D, R, ADD;

char S[NMAX];

int main()
{
    f.tie(NULL);

    f>>(S+1)>>D;

    N=strlen(S+1);

    for(i=N; i>=1; --i)
        A[++A[0]]=S[i]-'0';

    for(i=A[0]; i>=1; --i)
        R=(R*10+A[i])%D;

    if(!R)
        for(i=A[0]; i>=1; --i)
            g<<A[i];
    else
    {
        ADD=D-R;

        while(ADD)
        {
            B[++B[0]]=ADD%10;

            ADD/=10;
        }

        for(i=1; i<=N; ++i)
        {
            ANS[++ANS[0]]=A[i]+B[i]+T;

            T=ANS[ANS[0]]/10;

            ANS[ANS[0]]%=10;
        }

        if(T)
            ANS[++ANS[0]]=T;

        for(i=ANS[0]; i>=1; --i)
            g<<ANS[i];
    }

    g<<'\n';

    return 0;
}