Pagini recente » Cod sursa (job #1330145) | Cod sursa (job #1617210) | Cod sursa (job #687053) | Cod sursa (job #601040) | Cod sursa (job #752669)
Cod sursa(job #752669)
#include<fstream>
using namespace std;
#include<cstring>
char c[1000001];
short m[1000001],dd[21];
long long mod(short a[],int n,long long d)
{
int r=0;
for(int i=1;i<=n;i++)
r=(r*10+a[i])%d;
return r;
}
void add(short a[],int n,short b[],int m)
{
int t=0,i,j;
a[0]=b[0]=0;
for(i=n,j=m;i && j;i--,j--)
{
a[i]+=b[j]+t;
if(a[i]>9)
{
a[i]-=10;
t=1;
}
else
t=0;
}
while(t)
{
a[i]+=t+b[j];
if(a[i]>9)
{
a[i]-=10;
t=1;
}
else
t=0;
i--;
}
}
int main()
{
ifstream fcin("next.in");
ofstream fcout("next.out");
int n,i,nr=0;
long long d,ogl=0;
fcin.get(c,1000000);
n=strlen(c);
fcin>>d;
for(i=0;i<n;i++)
m[i+1]=c[i]-'0';
if(mod(m,n,d)==0)
for(i=1;i<=n;i++)
fcout<<m[i];
else
{
d-=mod(m,n,d);
while(d)
ogl=ogl*10+d%10,d/=10;
d=ogl;
while(d)
dd[++nr]=d%10,d/=10;
add(m,n,dd,nr);
if(m[0])
fcout<<m[0];
for(i=1;i<=n;i++)
fcout<<m[i];
}
return 0;
}