Cod sursa(job #1425302)

Utilizator BLz0rDospra Cristian BLz0r Data 27 aprilie 2015 11:41:03
Problema Next Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <cstdio>
#include <cstring>
using namespace std;

#define Nmax 1000005

FILE *f = fopen ( "next.in", "r" );
FILE *g = fopen ( "next.out", "w" );

int A[Nmax];
char S[Nmax];

long long Modulo ( int A[], int Mod ){
    long long rez = 0;

    for ( int i = A[0]; i > 0; i-- )
        rez = ( rez * 10 + A[i] ) % Mod;

    return rez;
}

void Adun ( int A[], long long 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(){
    long long D;

    fgets ( S, Nmax, f );

    int k;
    for ( k = 0; '0' <= S[k] && S[k] <= '9'; k++ );
    for ( k--; k >= 0; k-- )
        A[++A[0]] = S[k] - '0';
    for (; A[A[0]] == 0 && A[0]; A[0]-- );

    fscanf ( f, "%lld", &D );

    long long rest = ( D - Modulo ( A, D ) ) % D;

    Adun ( A, rest );

    for ( int i = A[0]; i >= 1; --i )
        fprintf ( g, "%d", A[i] );
    fprintf ( g,"\n" );

    return 0;
}