Pagini recente » Cod sursa (job #742861) | Cod sursa (job #65389)
Cod sursa(job #65389)
#include <stdio.h>
#include <string.h>
#define maxn 1000001
#define maxd 50
int n[maxn];
//int d[maxd];
//int r[maxd];
int aux[maxd];
void swap(int &a, int &b)
{
int aux = a;
a=b;
b=aux;
}
long mod(int A[], long B)
{
int i, t = 0;
for (i = A[0]; i > 0; i--)
t = (t * 10 + A[i]) % B;
return t;
}
void add(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;
}
void sub(int A[], int B[])
{
int i, t = 0;
for (i = 1; i <= A[0]; i++)
A[i] += (t = (A[i] -= B[i] + t) < 0) * 10;
for (; A[0] > 1 && !A[A[0]]; A[0]--);
}
void init()
{
memset(n,0,sizeof(n));
memset(aux,0,sizeof(aux));
//memset(d,0,sizeof(d));
//memset(r,0,sizeof(r));
}
int main()
{
init();
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
char x;
scanf("%c",&x);
while(1)
{
n[++n[0]]=(int)(x-48);
scanf("%c",&x);
if (!('0' <= x && x <= '9')) break;
}
long long _d,i;
scanf("%lld",&_d);
/*
while(1)
{
d[++d[0]]=(int)(x-48);
scanf("%c",&x);
if (!('0' <= x && x <= '9')) break;
}
*/
for(i=1;i<=n[0]/2;++i) swap(n[i],n[n[0]-i+1]);
long long _r = mod(n,_d);
long long _aux=(_d-_r)%_d;
long long p=_aux;
while(p)
{
aux[++aux[0]]=p%10;
p/=10;
}
if(!aux[0]) aux[0]++;
for(i=1;i<=aux[0]/2;++i) swap(aux[i],aux[aux[0]-i+1]);
add(n,aux);
for(i=n[0];i>0;--i) printf("%d",n[i]);
return 0;
}