Pagini recente » Cod sursa (job #1081789) | Cod sursa (job #2112321) | Cod sursa (job #1447159) | Cod sursa (job #2690466) | Cod sursa (job #752663)
Cod sursa(job #752663)
#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]++;
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;
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)
{
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;
}