Pagini recente » Cod sursa (job #1030133) | Cod sursa (job #2584761) | Cod sursa (job #3184189) | Cod sursa (job #2115233) | Cod sursa (job #1747455)
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int MAX_DIGITS = 1000005;
const int MAXN = 1000000;
const int BASE = 10;
char s[MAXN+5];
class HugeN {
private: int x[MAX_DIGITS];
public:
HugeN () {
x[0] = 1;
memset( x, 0, sizeof(x) );
}
HugeN ( char s[MAXN+5] ) {
x[0] = strlen ( s );
for ( int i = 1 ; i <= x[0] ; ++ i )
x[i] = s[x[0] - i] - '0';
}
void print() {
for ( int i = x[0] ; i >= 1 ; -- i )
printf ( "%d", x[i] );
printf ( "\n" );
}
HugeN operator += ( long long k );
long long operator % ( long long k );
};
HugeN HugeN::operator += ( long long k ) {
int i;
long long aux, trn;
trn = k;
for ( i = 1 ; i <= x[0] ; ++ i ) {
aux = x[i] + trn;
x[i] = aux % 10;
trn = aux / 10;
}
while ( trn ) {
x[++x[0]] = trn % 10;
trn /= 10;
}
return *this;
}
long long HugeN::operator % ( long long k ){
int i, r = 0, aux;
for ( i = x[0] ; i >= 1 ; -- i )
r = ( r * 10 + x[i] ) % k;
return r;
}
int main() {
freopen ( "next.in", "r", stdin );
freopen ( "next.out", "w", stdout );
long long d, r;
scanf ( "%s", &s );
scanf ( "%lld", &d );
HugeN n(s);
r = n % d;
if ( !r )
n.print();
else {
n += ( d - r );
n.print();
}
return 0;
}