Pagini recente » Cod sursa (job #1958704) | Cod sursa (job #1276458) | Cod sursa (job #1473296) | Cod sursa (job #2063580) | Cod sursa (job #843156)
Cod sursa(job #843156)
#include<cstdio>
#include<cstring>
#include<algorithm>
#define nmax 1000010
using namespace std;
short int a[nmax],b[20];
long long d;
void read()
{
freopen("next.in","r",stdin);
char x[nmax];
scanf("%s %lld",&x,&d);
a[0]=strlen(x);
for(int i=1;i<=a[0];i++)
a[i]=(int)(x[i-1]-'0');
reverse(a+1,a+a[0]+1);
}
long long mod()
{
int i;
long long t=0;
for(i=a[0];i;i--)
t=(t*10+a[i])%d;
return t;
}
void transform(long long tmp)
{
int i;
for(i=1;tmp;i++)
{
b[i]=tmp%10;
tmp/=10;
}
b[0]=i-1;
}
void add()
{
int i;
for(i=1;i<=a[0] || i<=b[0];i++)
{
a[i]=a[i]+b[i];
if(a[i]>9)
{
a[i+1]+=a[i]/10;
a[i]%=10;
}
}
a[0]=i-1;
if(a[i])
a[0]++;
}
void sub()
{
int i,t=0;
for(i=1;i<=a[0];i++)
{
a[i]-=((i<=b[0])?b[i]:0)+t;
a[i]+=(t=a[i]<0)*10;
}
}
void print()
{
freopen("next.out","w",stdout);
for(int i=a[0];i;i--)
printf("%d",a[i]);
printf("\n");
}
void nr()
{
long long modulo=mod();
if(!modulo)
{
print();
return;
}
transform(d);
add();
transform(modulo);
sub();
print();
}
int main()
{
read();
nr();
return 0;
}