Pagini recente » Cod sursa (job #2030851) | Cod sursa (job #526232) | Cod sursa (job #1527430) | Cod sursa (job #2550353) | Cod sursa (job #1958176)
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std ;
class Huge : protected vector<int>{
private:
static const int SIZE = 111115;
static const int BASE = 1000000000;
static const int EXP = 9;
public:
inline Huge();
inline Huge(long long N);
inline Huge(char N[]);
inline void print();
inline void operator *= (long long B);
inline void operator /= (long long B);
inline int operator % (int B);
inline void operator += (Huge &B);
inline void operator ++ (int);
};
#define A (*this)
inline Huge :: Huge(){
A.resize(SIZE);
}
inline Huge :: Huge(long long N){
A.resize(SIZE);
for(A[0] = 0; N > 0; N /= BASE){
A[++A[0]] = N % BASE;
}
}
inline Huge :: Huge(char N[]){
A.resize(SIZE); A[0] = 0;
for(long long length = strlen(N); length > 0; length -= EXP){
A[0]++;
for(long long i = max(0ll, length - EXP); i < length; i++){
A[A[0]] = A[A[0]] * 10 + N[i] - '0';
}
}
}
inline void Huge :: print(){
printf("%d", A[A[0]]);
for(int i = A[0] - 1; i > 0; i--){
printf("%09d", A[i]); // %0EXPd
}printf("\n");
}
inline void Huge :: operator *= (long long B){
int i; long long carry = 0;
for(i = 1; i <= A[0] || carry; i++, carry /= BASE)
A[i] = (carry += 1LL * ((i <= A[0]) ? A[i] : 0) * B) % BASE;
A[0] = i - 1;
}
inline void Huge :: operator /= (long long B){
long long carry = 0;
for(int i = A[0]; i > 0; i--, carry %= B)
A[i] = (carry = carry * BASE + A[i]) / B;
for(; A[0] > 1 && !A[A[0]]; A[0]--);
}
inline int Huge :: operator % (int B){
int i, t = 0;
for(i = A[0]; i > 0; i--){
t = (t * BASE + A[i]) % B;
}
return t;
}
inline void Huge :: operator += (Huge &B){
long long carry = 0; int i;
for(i = 1; i <= A[0] || i <= B[0] || carry; i++, carry /= BASE)
A[i] = (carry += ((i <= A[0]) ? A[i] : 0) + ((i <= B[0]) ? B[i] : 0)) % BASE;
A[0] = i - 1;
}
inline void Huge :: operator ++ (int){
Huge B = 1; A += B;
}
#undef A
char numberN[1000020];
long long D;
Huge N;
int main(){
freopen("next.in", "r", stdin);
freopen("next.out", "w", stdout);
scanf("%s", numberN);
scanf("%lld", &D);
N = numberN;
if(N % D == 0){
printf("%s", numberN);
}
N /= D; N++; N *= D;
N.print();
return 0;
}