Pagini recente » Cod sursa (job #677690) | Cod sursa (job #1159837) | Cod sursa (job #2822329) | Cod sursa (job #680063) | Cod sursa (job #524142)
Cod sursa(job #524142)
#include<stdio.h>
#include<string.h>
const char in[]="next.in", out[]="next.out";
const int Nmax = 1000005 ;
typedef int huge[Nmax] ;
huge a;
int b[50];
long long d, r ;
char s[Nmax];
long long mod(huge A, long long B)
{
long long i, t = 0;
for (i = A[0]; i > 0; i--)
t = (t * 10 + A[i]) % B;
return t;
}
void aduna(huge &A, int B[])
{
long long i, t = 0;
for (i=1; i<=A[0] || i<=B[0] || t; i++, t/=10)
A[i] = (t += A[i] + (i > B[0] ? 0 :B[i])) % 10;
A[0] = i - 1;
}
int main()
{
freopen(in,"r",stdin);
freopen(out,"w",stdout);
fgets(s, Nmax, stdin);
for(int i = strlen(s); i >= 0 ; --i)
if(s[i] >='0' && s[i] <= '9')
a[ ++a[ 0 ] ] = s[i] - '0';
scanf("%lld", &d);
r = mod(a, d);
d = ( d - r ) % d;
while(d)b[++b[0]] = d % 10, d /= 10;
aduna(a, b);
for( int j = a[0]; j >= 1 ; --j)
printf("%d", a[j]);
return 0;
}