Cod sursa(job #2295600)

Utilizator andreisavulescuSavulescu Andrei andreisavulescu Data 3 decembrie 2018 19:45:31
Problema Next Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
#include <cstring>

using namespace std;
ifstream f("next.in");
ofstream g("next.out");
const int NMAX=10000001;

long long k;
int A[NMAX], K[NMAX];
char c[NMAX];

void rest(long long D, long long &CAT)
{
    long long  T = 0;
    for(int i = A[0]; i > 0; i--)
        {
            T = T * 10 + A[i];
            T %= D;
        }
    CAT = D - T;
}

void adunare()
{
    int T=0;
    if(A[0] < K[0])
        A[0] = K[0];
    for(int i = 1; i <= A[0]; i++)
    {
        T += A[i] + K[i];
        A[i] = T % 10;
        T /= 10;
    }
    if(T > 0) A[++A[0]] = 1;
}

int main()
{
    f >> c;
    k = strlen(c);
    A[0] = k;
    for(int i = k - 1; i >= 0; i--)
        A[k - i]= c[i] - '0';
    long long D, R;
    f >> D;
    rest(D, R);
    if(D != R)
    {
        while(R)
        {
            K[++K[0]] = R % 10;
            R /= 10;
        }
        adunare();
    }
    for(int i = A[0]; i >= 1; i--)
        g << A[i];
    return 0;
}