Pagini recente » Cod sursa (job #2070088) | Cod sursa (job #368385) | Cod sursa (job #1491026) | Cod sursa (job #3174851) | Cod sursa (job #38328)
Cod sursa(job #38328)
#include <cstdio>
#include <cstring>
#define FIN "next.in"
#define FOUT "next.out"
#define nrc 1
#define div 10
class numar {
public:
long A[1000000/nrc+1];
numar() {
memset(A,0,sizeof(A));
}
numar (long long x) {
long p=1;
A[0] = 1;
for (;x;x/=10) {
A[ A[0] ] += p*(x%10);
p*=10;
if ( p==div )
A[0]++, p=1;
}
}
void load() {
char buf[1000000];
long n, i, p;
fgets(buf, 1000000, stdin);
n = strlen(buf);
while ( buf[n]>'9' || buf[n]<'0' )
n--;
p=1; A[0]=1;
for (i=n; i>=0; --i) {
A[ A[0] ] += p*(buf[i]-'0');
p*=10;
if ( p==div )
A[0]++, p=1;
}
if ( p==1 )
A[0]--;
}
long long rest(long long x) {
long long t=0;
long i;
for (i=A[0]; i>0; --i)
t = (t*div+A[i]) % x;
return t;
}
void add(long long x) {
numar B(x);
long t, i;
for (i=1, t=0; i<=A[0] || i<=B.A[0] || t; i++, t/=div)
A[i] = (t = A[i] += (B.A[i]+t)) % div;
A[0] = i-1;
}
void write() {
long t,i;
printf("%ld", A[A[0]]);
for (i=A[0]-1;i;--i)
for (t=div/10; t; t/=10)
printf("%ld", (A[i]/t)%10);
printf("\n");
}
} A;
long long D;
int main() {
freopen(FIN, "r", stdin);
A.load();
scanf("%lld", &D);
fclose(stdin);
A.add( D-A.rest(D) );
freopen(FOUT, "w", stdout);
A.write();
fclose(stdout);
return 0;
}