Pagini recente » Cod sursa (job #1026727) | Cod sursa (job #1443277) | Cod sursa (job #783747) | Cod sursa (job #2520938) | Cod sursa (job #1238823)
#include <cstdio>
#include <cstring>
using namespace std;
const int nmax=1000020;
char s[1000005];
int v[20];
class huge{
private: int x[nmax];
public: huge(){
memset(x,0,sizeof(x));
x[0]=1;
};
huge(long long n){
memset(x,0,sizeof(x));
x[0]=0;
do{
x[++x[0]]=n%10;
n=n/10;
}while(n);
}
void read(){
scanf("%s",&s);
int n,i;
n=strlen(s);
x[0]=0;
for(i=n-1;i>=0;--i){
++x[0];
x[x[0]]=s[i]-'0';
}
}
void print(){
for(int i=x[0];i>=1;--i) printf("%d",x[i]);
}
long long& operator %(long long k){
long long r=0;
int i;
for(i=x[0];i>0;--i){
r=(long long)r*10+x[i];
r%=k;
}
return r;
}
huge adunNimic(){
int i,t;
x[0]=x[0]>v[0]?x[0]:v[0];
for(t=0,i=1;i<=x[0];++i){
if(i<18)
t=x[i]+v[i]+t;
else
t=x[i]+t;
x[i]=t%10;
t/=10;
}
if(t){
++x[0];
x[x[0]]=t;
}
return *this;
}
};
void DOreMIfa(long long n){
do{
v[++v[0]]=n%10;
n=n/10;
}while(n);
}
int main(){
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
huge A;
A.read();
long long d,r;
scanf("%lld",&d);
r=A%d;
if(r){
d-=r;
DOreMIfa(d);
A.adunNimic();
}
A.print();
return 0;
}