Cod sursa(job #1829989)

Utilizator silkMarin Dragos silk Data 15 decembrie 2016 22:18:59
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <cstdio>
#include <cstring>
#define NMax 1000005
#define ll long long

ll D;
int v0;
char v[NMax+1];
char u[NMax+1];
char s[NMax+1];

void Add()
{
    int i,t=0;
    for(i = 1; i <= u[0] || i <= v0 || t; ++i,t/=10)
    v[i] = ( t = v[i] + u[i] + t ) % 10;
    v0 = i-1;
}

ll Rest()
{
    int i;
    ll t=0;
    for(i = v0; i >= 1; --i)
    t = ( t * 10 + v[i] ) % D;
    return t;
}

void Read()
{
    fgets(s,NMax,stdin);
    scanf("%lld",&D);
    v0 = strlen(s)-1;
    for(int i = 1; i <= v0; ++i) v[i] = s[v0-i]-'0';
}

void Write()
{
    for(int i = v0; i >= 1; --i) printf("%d",v[i]);
    printf("\n");
}

int main(){
    freopen("next.in","r",stdin);
    freopen("next.out","w",stdout);

    ll r;

    Read();
    r = Rest();
    if(!r) { Write(); return 0; }
    else
    {
        r = D - r;
        while(r) { u[ ++u[0] ] = r%10; r/=10; }

        Add();
        Write();
    }



return 0;
}