Cod sursa(job #1425282)

Utilizator BLz0rDospra Cristian BLz0r Data 27 aprilie 2015 11:08:03
Problema Next Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>
#include <vector>
#include <string>
using namespace std;

#define Nmax 1000002

ifstream fin  ( "next.in" );
ofstream fout ( "next.out" );

int A[Nmax], B[Nmax];
string S;

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

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

    return rez;
}

void Adun ( int A[], int B[] ){

    int T = 0;
    A[0] = max ( A[0], B[0] );

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


int main(){
    vector < int > :: iterator it;
    long long D;

    fin >> S >> D;

    for ( int i = S.size() - 1; i >= 0; --i )
        A[++A[0]] = S[i] - '0';

    S.clear();

    long long rest = Modulo ( A, D );

    if ( rest ){
        D -= rest;

        while ( D ){
            B[++B[0]] = D%10;
            D /= 10;
        }

        Adun ( A, B );
    }

    for ( int i = A[0]; i >= 1; --i )
        fout << A[i];

    return 0;
}