Pagini recente » Cod sursa (job #1026790) | Cod sursa (job #2121547) | Cod sursa (job #1137619) | Cod sursa (job #2675696) | Cod sursa (job #239136)
Cod sursa(job #239136)
#include <algorithm>
using namespace std;
#define DIM 1000005
#define ll long long
int a[DIM],b[DIM];
ll r,d;
void clean (int b[DIM])
{
int i;
for (i=1; i<=b[0]; ++i)
b[i]=0;
b[0]=0;
}
ll rest (int a[DIM],ll d)
{
int i;
ll t=0;
for (i=a[0]; i; --i)
t =(t*10+a[i])%d;
return t;
}
void aduna (int a[DIM],int b[DIM])
{
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 print ()
{
int i;
for (i=a[0]; i; --i)
printf ("%d",a[i]);
}
int main ()
{
freopen ("next.in","r",stdin);
freopen ("next.out","w",stdout);
int i;
char ch;
while (scanf ("%c",&ch))
{
if (ch=='\n' || ch==' ')
break;
b[++b[0]]=ch-'0';
}
a[0]=b[0];
for (i=1; i<=a[0]; ++i)
a[i]=b[b[0]-i+1];
clean (b);
scanf ("%lld",&d);
r=rest (a,d);
r=(d-r)%d;
while (r)
{
b[++b[0]]=r%10;
r/=10;
}
aduna (a,b);
print ();
return 0;
}