Pagini recente » Cod sursa (job #2609694) | Cod sursa (job #525311) | Cod sursa (job #883995) | Cod sursa (job #2535839) | Cod sursa (job #46519)
Cod sursa(job #46519)
#include <stdio.h>
#include <string.h>
int A[1000005],B[1000005];
long long mod(long long b)
{
long long i, t = 0;
for (i = A[0]; i > 0; i--)
t = (t * 10 + A[i]) % b;
return t;
}
void add()
{
long long i, t = 0;
for (i=1; i<=A[0] || i<=B[0] || t; i++, t/=10)
A[i] = (t += A[i] + B[i]) % 10;
A[0] = i - 1;
}
void invert ()
{
int i;
for (i = B[0]; i > 0; i--)
A[ B[0] - i + 1 ] = B[i];
A[0] = B[0];
}
int main()
{
int x,i;
long long b=0,a;
char c;
FILE *in=fopen("next.in","r");
x=fscanf(in,"%c",&c);
while (x!=EOF && c>='0' && c<='9')
{
B[ ++B[0] ] = c-'0';
x=fscanf(in,"%c",&c);
}
while (x!=EOF && (c<'0' || c>'9'))
x=fscanf(in,"%c",&c);
while (x!=EOF && c>='0' && c<='9')
{
b=b*10+c-'0';
x=fscanf(in,"%c",&c);
}
fclose(in);
invert();
a=mod(b);
if (a)
{
a=b-a;
memset(B,0,1000005);
while (a)
{
B[ ++B[0] ] = a%10;
a/=10;
}
add();
}
FILE *out=fopen("next.out","w");
for (i = A[0]; i > 0; i--)
fprintf(out,"%d",A[i]);
fprintf(out,"\n");
fclose(out);
return 0;
}