Pagini recente » Cod sursa (job #1159218) | Cod sursa (job #1367626) | Cod sursa (job #1427479) | Cod sursa (job #423721) | Cod sursa (job #912553)
Cod sursa(job #912553)
#include<fstream>
#include<cstring>
#include<algorithm>
#define NMAX 1000010
#define ULL unsigned long long
using namespace std;
short b[20],v[NMAX];
ULL d,m;
void read()
{
ifstream fin("next.in");
char x[NMAX];
fin>>x>>d;
v[0]=strlen(x);
for(int i=1;i<=v[0];i++)
v[i]=(short)(x[i-1]-'0');
fin.close();
}
void transform(ULL aux)
{
int i;
for(i=1;aux;i++,aux/=10)
b[i]=aux%10;
b[0]=i-1;
}
void mod()
{
for(int i=1;i<=v[0];i++)
{
m=m*10+v[i];
if(m<d)
continue;
m%=d;
}
}
void add()
{
int i;
for(i=1;i<=v[0] || i<=b[0] || v[i];i++)
{
if(i<=b[0])
v[i]+=b[i];
if(v[i]>9)
{
v[i+1]++;
v[i]%=10;
}
}
v[0]=i-1;
}
void sub()
{
int i;
for(i=1;i<=v[0] || v[i];i++)
{
if(i<=b[0])
v[i]-=b[i];
if(v[i]<0)
{
v[i]+=10;
v[i+1]--;
}
}
for(i=v[0];!v[i];i--);
v[0]=i;
}
void solve()
{
transform(d);
mod();
reverse(v+1,v+v[0]+1);
add();
transform(m);
sub();
}
void print()
{
ofstream fout("next.out");
for(int i=v[0];i;i--)
fout<<v[i];
}
int main()
{
read();
solve();
print();
return 0;
}