Cod sursa(job #1425277)

Utilizator BLz0rDospra Cristian BLz0r Data 27 aprilie 2015 10:55:52
Problema Next Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 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' );

    long long rest = Modulo ( A, D );

    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;
}