Pagini recente » Cod sursa (job #285121) | Cod sursa (job #526461) | Cod sursa (job #2912965) | Cod sursa (job #368894) | Cod sursa (job #39223)
Cod sursa(job #39223)
#include <cstdio>
#include <string>
#define FIN "next.in"
#define FOUT "next.out"
#define NMAX 1000101
int N[NMAX], val[21];
long long D, R;
char s[NMAX + 10];
void read ()
{
int ct = 0;
gets (s);
N[0] = strlen (s);
for (int i = N[0] - 1; i >= 0; -- i)
N[++ ct] = s[i] - '0';
scanf ("%lld", &D);
}
void convert (long long x)
{
int ct = 0;
while (x)
{
val[++ct] = x % 10;
x /= 10;
}
val[0] = ct;
}
void adun (int A[], int B[])
{
int i, t = 0;
for (i = 1; i <= A[0] || i <= B[0] || t; i++, t /= 10)
A[i] = (t += A[i] + B[i]) % 10;
A[0] = i - 1;
}
long long mod (int A[], long long B)
{
int i;
long long t = 0;
for (i = A[0]; i > 0; -- i)
t = (t * 10 + A[i]) % B;
return t;
}
void solve ()
{
long long R = mod (N, D);
D = (D - R) % D;
convert (D);
adun (N, val);
for (int i = N[0]; i >= 1; -- i)
printf ("%d", N[i]);
printf ("\n");
}
int
main ()
{
freopen (FIN, "rt", stdin);
freopen (FOUT, "wt", stdout);
read ();
solve ();
return 0;
}