Cod sursa(job #2305712)

Utilizator andreiomd1Onut Andrei andreiomd1 Data 20 decembrie 2018 21:44:25
Problema Next Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 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;
        }

        reverse(B+1, B+B[0]+1);

        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;
}