Cod sursa(job #1803619)

Utilizator eddie.deaconuDeaconu Stefan-Eduard eddie.deaconu Data 11 noiembrie 2016 17:08:15
Problema Nunta Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <iostream>
#include <fstream>

using namespace std;

const int NMAX = 1000000;
char v[NMAX + 1];
int lg;
long long D;

long long lung(char *a)
{
    int i = 0;
    while(a[i]) a[i++] -= 48;
    return i;
}

void inversare()
{
    int i = 1, j = lg - 1;
    v[lg] = v[0];
    while(i < j)
            swap(v[i++], v[j--]);
}

long long modulo(char *a, long long b)
{
    long long r = 0;
    for(int i = lg; i > 0; i--)
        r = (r * 10 + a[i]) % b;
    return r;
}

void adun(char *a, long long b)
{
    long long t = b;
    for(int i = 1; i <= lg; i++)
    {
        t += a[i];
        a[i] = t % 10;
        t /= 10;
    }
    while(t)
    {
        a[++lg] = t % 10;
        t /= 10;
    }
}

int main()
{
    ifstream f("next.in");
    ofstream g("next.out");
    f.getline(v, NMAX + 1);
    f >> D;
    lg = lung(v);
    inversare();
    long long r = modulo(v, D);
    if(r != 0)
        adun(v, D - r);
    for(int i = lg; i > 0; i--)
        g << int(v[i]);
    f.close();
    g.close();
    return 0;
}