Pagini recente » Cod sursa (job #328023) | Cod sursa (job #2314186) | Cod sursa (job #1451120) | Cod sursa (job #1836532) | Cod sursa (job #1524125)
#include <fstream>
#include <algorithm>
#include <cstring>
#define D 40000
using namespace std;
ifstream f("next.in");
ofstream g("next.out");
typedef int Huge[1000003];
Huge a;
long long d,r;
int n,i;
char c=0;
void Subtract(Huge a,Huge b)
{ int i, T=0;
for (i=b[0]+1;i<=a[0];) b[i++]=0;
for (i=1;i<=a[0];i++)
a[i]+= (T=(a[i]-=b[i]+T)<0) ? 10 : 0;
while (!a[a[0]]) a[0]--;
}
void Add(Huge a, Huge b)
/* a <- a+b */
{ int i,T=0;
if (b[0]>a[0])
{ for (i=a[0]+1;i<=b[0];) a[i++]=0;
a[0]=b[0];
}
else for (i=b[0]+1;i<=a[0];) b[i++]=0;
for (i=1;i<=a[0];i++)
{ a[i]+=b[i]+T;
T=a[i]/10;
a[i]%=10;
}
if (T) a[++a[0]]=T;
}
unsigned long Mod(Huge A, unsigned long X)
{ int i;
unsigned long R=0;
for (i=A[0];i;i--)
R=(10*R+A[i])%X;
return R;
}
int main()
{ f.get(c);
while(c!='\n')
{ a[++a[0]]=c-'0';
f.get(c);
}
reverse(a+1,a+a[0]+1);
f>>d;
r=Mod(a,d);
if(r)
{ int x=d-r;
int k=1;
a[k]+=x;
int t=a[k]/10;
a[k]%=10;
while(t!=0 and k<=a[0])
{ a[++k]+=t;
t=a[k]/10;
a[k]%=10;
}
if(t==1) a[++a[0]]=1;
}
for(int i=a[0];i>=1;i--) g<<a[i];
return 0;
}