Cod sursa(job #1336222)

Utilizator laurageorgescuLaura Georgescu laurageorgescu Data 7 februarie 2015 10:53:53
Problema Next Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 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;

long long rest( huge x, long long k ) {
    long long t = 0;
    for( int i = ( int )x.size() - 1; i >= 0; -- i ) {
        x[ i ] = x[ i ] + t * base;
        t = x[ i ] % k;
        x[ i ] /= k;
    }
    return t;
}
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;
    for( int i = ( int )s.size() - 1; i >= 0; -- i ) {
        n.push_back( s[ i ] - '0' );
    }
    fin >> d;
    r = rest( n, 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;
}