Pagini recente » Cod sursa (job #1748907) | Cod sursa (job #2551124) | Istoria paginii runda/summer_camp_9/clasament | Cod sursa (job #680782) | Cod sursa (job #345714)
Cod sursa(job #345714)
#include <cstdio>
#include <cstring>
#define file_in "next.in"
#define file_out "next.out"
#define BASE 10
#define Nmax 1000001
short int a[Nmax];
short int rez[Nmax];
long long d;
long long r,x;
int n;
void scrie(short int a[])
{
long long i;
//printf("%d", a[a[0]]);
for (i = a[0]; i >= 1; --i)
printf("%hd", a[i]);
//printf("\n");
}
inline long long mod(short int A[], long long B)
{
long long i;
long long t=0;
for (i = A[0]; i > 0; i--)
t = (t * 10 + A[i]) % B;
return t;
}
inline void ADD(short int A[],short int B[])
{
long long i, t = 0;
for (i = 1; i <= A[0] || i <= B[0] || t; ++i, t /= BASE)
A[i] = (t += A[i] + B[i]) % BASE;
A[0] = i - 1;
}
inline void init(long long cif)
{long long i,t=0;
for(i=1;i<=rez[0]||t;++i)
{ t+=rez[i]*cif;
rez[i]=t%BASE;
t/=BASE;
}
rez[0]=i-1;
}
void citire()
{
long long i,l;
char s[Nmax];
scanf("%s\n", s);
l = strlen(s);
for (i = 1; i <= l; i ++)
{
++a[0];
//for (j = 8; j >= 0; --j)
if (l - i>= 0)
a[a[0]] = a[a[0]] * 10 + s[l - i] - '0';
}
scanf("%lld", &d);
}
int main()
{
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
citire();
r=mod(a,d);
x=(d-r)%d;
//init(x);
rez[0]=rez[1]=1;
init(x);
ADD(a,rez);
//freopen(file_out,"w",stdout);
scrie(a);
//printf("%d", x);
fclose(stdin);
fclose(stdout);
return 0;
}