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