Cod sursa(job #1425306)

Utilizator BLz0rDospra Cristian BLz0r Data 27 aprilie 2015 11:44:23
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <cstdio>
using namespace std;

#define Nmax 1000005
#define LLU unsigned long long

LLU D;
int N[Nmax];

char S[Nmax];

LLU mod( int A[], LLU B ){
    int i; LLU t = 0;
    for (i = A[0]; i > 0; i--)
        t = (t * 10 + A[i]) % B;
    return t;
}

void add( int A[], LLU B ){
    int i, t = 0;
    for (i = 1; i <= A[0] || B || t; i++, t /= 10, B /= 10)
        A[i] = (t += A[i] + B % 10) % 10;
    A[0] = i - 1;
}

int main(){

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

    fgets ( S, Nmax, stdin );
    int k;
    for ( k = 0; '0' <= S[k] && S[k] <= '9'; k++ );
    for ( k--; k >= 0; k-- )
        N[++N[0]] = S[k] - '0';
    for (; N[N[0]] == 0 && N[0]; N[0]-- );

    scanf(" %llu ", &D);

    LLU B = (D - mod(N, D)) % D;
    add(N, B);

    for (int i = N[0]; i; i--)
        printf("%d", N[i]);
    printf("\n");

    return 0;
}