Cod sursa(job #1425278)

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

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

vector < int > A, B;
string S;

long long Modulo ( vector < int > &A, int Mod ){
    long long rez = 0;

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

    return rez;
}

void Adun ( vector < int > &A, vector < int > &B ){

    int T = 0;

    while ( A.size() < B.size() )
        A.push_back ( 0 );
    while ( B.size() < A.size() )
        B.push_back ( 0 );

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


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

    fin >> S >> D;

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

    S.clear();

    long long rest = Modulo ( A, D );

    if ( rest ){
        D -= rest;

        while ( D ){
            B.push_back ( D%10 );
            D /= 10;
        }

        Adun ( A, B );
    }

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

    return 0;
}