Cod sursa(job #1336303)

Utilizator laurageorgescuLaura Georgescu laurageorgescu Data 7 februarie 2015 16:25:12
Problema Next Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<fstream>
#include<string>
#include<vector>

using namespace std;

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

typedef vector <int> huge;

const int base = 10;
string s;

huge add( huge x, long long p ) {
    int t = 0;
    for( int i = 0; p > 0 || t != 0; ++ i, p /= 10 ) {
        if ( i == ( int )x.size() ) {
            x.push_back( 0 );
        }
        x[ i ] += p % 10 + t;
        t = x[ i ] / base;
        x[ i ] %= base;
    }
    return x;
}
int main() {
    long long r, d;
    huge n;
    fin >> s >> d;
    r = 0;
    for( int i = ( int )s.size() - 1; i >= 0; -- i ) {
        n.push_back( s[ i ] - '0' );
    }
    for( int i = 0; i < ( int )s.size(); ++ i ) {
        r = (r * 10 + s[ i ] - '0') % d;
    }
    if ( r == 0 ) {
        r = d;
    }
    r = d - r;
    n = add( n, r );
    for( int i = ( int )n.size() - 1; i >= 0; -- i ) {
        fout << n[ i ];
    }
    fout << "\n";
    fin.close();
    fout.close();
    return 0;
}