Pagini recente » Cod sursa (job #2357492) | Cod sursa (job #2129018) | Cod sursa (job #1626040) | Cod sursa (job #3208341) | Cod sursa (job #490217)
Cod sursa(job #490217)
#include<fstream>
#include<iostream>
using namespace std;
ifstream in("next.in");
ofstream out("next.out");
const int N=1000010;
char a[N];
int z[N];
long long d;
void read()
{
in.getline(a,N);
in>>d;
}
void invers(int t[N])//n=vector size
{
int aux;
for(int i=1,j=t[0];i<j;++i,--j)
{
aux = t[i];
t[i] = t[j];
t[j] = aux;
}
}
void convert()
{
int i;
z[0]=0;
for(i=0;a[i]!=0;i++)
z[++z[0]]=a[i]-'0';
}
long long mod(int x[N])
{
long long r=0;
//cout<<x[0]<<"\n"<<d<<"\n";
for(int i=1;i<=x[0];i++)
{
r=r*10+x[i];
r%=d;
//cout<<r;
}
return r;
}
void suma(int x[N],long long y)
{
long long i,aux,t=y;
for(i=1;i<=x[0] || t!=0;i++)
{
aux=t+x[i];
x[i]=aux%10;
t=aux/10;
}
x[0]=i-1;
}
void afis(int x[N])
{
for( int i=1;i<=x[0];i++)
out<<x[i];
}
int main()
{
long long rest=0;
read();
convert();
//out<<mod(z);
rest=mod(z);
if(rest==0)
out<<a;
else
{
invers(z);
suma(z,d-rest);
invers(z);
afis(z);
}
return 0;
}