Cod sursa(job #1278853)

Utilizator felixiPuscasu Felix felixi Data 29 noiembrie 2014 14:48:31
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <algorithm>
#include <fstream>
#include <vector>

using namespace std;

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

const int MAX_CF = 1000000001;
const int baza   = 10;

vector <int> x;
long long D;

long long hn_mod( vector<int> &x, long long n ) {
    long long r= 0;
    for( int i= (int)x.size()-1;  i>=0;  --i ) {
        r= r*10+(long long)x[i];
        r%= n;
    }
    return r;
}

void hn_add( vector<int> &x, long long n ) {
    int t= 0;
    for( int i= 0;  t!=0 || n!=0;  ++i, n/= 10 ) {
        if( i == (int)x.size() )  x.push_back(0);
        int c= (int)(n%10);
        x[i]+= c+t;
        if( x[i] >= baza ) {
            x[i]-= baza;
            t= 1;
        }
        else {
            t= 0;
        }
    }
}

void afis( vector <int> &x ) {
    for( int i= (int)x.size()-1;  i>=0;  --i )  out << x[i];
}

int main() {
    char c;
    in.get(c);
    while( c != '\n' ) {
        x.push_back( c-'0' );
        in.get(c);
    }
    in >> D;
    reverse( x.begin(), x.end() );
    ///  Rezolva
    long long mod= hn_mod( x, D );
    mod= (D-mod) % D;
    hn_add( x, mod );
    afis( x );  out << '\n';
    return 0;
}