Pagini recente » Cod sursa (job #836815) | Cod sursa (job #818499) | Cod sursa (job #501615) | Cod sursa (job #1386615) | Cod sursa (job #986505)
Cod sursa(job #986505)
#include <fstream>
#include <string.h>
#include <algorithm>
using namespace std;
ifstream f("next.in");
ofstream g("next.out");
long long D;
int N[1000002],V[18];
char Aux[1000002];
void Swap(int& x,int& y)
{
int aux;
aux=x;
x=y;
y=aux;
}
bool is_digit(char ch)
{
return ch>='0' && ch<='9';
}
void Read()
{
int i=0;
char ch;
f>>(Aux+1)>>D;
N[0]=strlen(Aux+1);
for(i=1;i<=N[0];i++)
N[i]=Aux[N[0]-i+1]-'0';
}
void Add(int A[], int B[])
/* A <- A+B */
{ int i,T=0;
if (B[0]>A[0])
{ for (i=A[0]+1;i<=B[0];) A[i++]=0;
A[0]=B[0];
}
else for (i=B[0]+1;i<=A[0];) B[i++]=0;
for (i=1;i<=A[0];i++)
{ A[i]+=B[i]+T;
T=A[i]/10;
A[i]%=10;
}
if (T) A[++A[0]]=T;
}
void AtribValue(int H[], long long X) {
H[0] = 0;
while (X) {
++H[0];
H[H[0]] = X % 10;
X /= 10;
}
}
long long mod(int A[], long long B)
{
long long i, t = 0;
for (i = A[0]; i > 0; i--)
t = (t * 10 + A[i]) % B;
return t;
}
void Solve()
{
long long Rest=mod(N,D);
if(Rest!=0)
AtribValue(V,D-Rest);
else
V[0]=1;
Add(N,V);
for(int i=N[0];i>=1;i--)
g<<N[i];
g<<"\n";
}
int main()
{
Read();
Solve();
/*for(int i=1;i<=99999;i++)
g<<9;
g<<"\n";
g<<10000000000000000;*/
return 0;
}