Pagini recente » Cod sursa (job #569738) | Cod sursa (job #1450749) | Cod sursa (job #385430) | Cod sursa (job #2782648) | Cod sursa (job #1747648)
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
char s[1000005];
const int Max = 1000005;
class HugeN
{
private: char x[Max];
public:
HugeN()
{
memset(x, 0, sizeof(x));
x[0]=1;
}
HugeN(int nr)
{
memset(x, 0, sizeof(x));
do
{
x[++x[0]]=nr%10;
nr=nr/10;
}while(nr);
}
HugeN(char *s)
{
int i,aux;
int n=strlen(s);
x[0]=n;
for(i=0; i<n; i++)
x[i+1]=s[i]-'0';
for(i=1; i<=n/2; i++){
aux=x[i];
x[i]=x[n-i+1];
x[n-i+1]=aux;
}
}
void print()
{
for(int i=x[0]; i>0; i--)
printf("%d", x[i]);
printf("\n");
}
HugeN operator+(long long k);
long long operator%(long long k);
};
HugeN HugeN::operator+(long long k)
{
HugeN temp;
temp.x[0]=x[0];
int tr=0,aux,i;
for(i=1; i<=temp.x[0]; i++){
aux=x[i]+k%10+tr;
temp.x[i]=(aux%10);
tr=aux/10;
k/=10;
}
if(tr>0)
temp.x[++temp.x[0]]=tr;
return temp;
}
long long HugeN::operator%(long long k)
{
int i,nr=0,aux;
for(i=x[0]; i>0; i--){
if(nr<k){
nr=nr*10+x[i];
}
else{
nr=nr%k;
nr=nr*10+x[i];
}
}
if(nr>k)
nr=nr%k;
return nr;
}
int main()
{ freopen("next.in", "r",stdin);
freopen("next.out", "w",stdout);
long long k,sol;
gets(s);
scanf("%lld", &k);
HugeN a(s);
sol=a%k;
if(sol==0)
a.print();
else{
sol=k-sol;
a=a+sol;
a.print();
}
return 0;
}