Pagini recente » Cod sursa (job #1930020) | Cod sursa (job #1237599) | Cod sursa (job #722102) | Cod sursa (job #2205246) | Cod sursa (job #46536)
Cod sursa(job #46536)
#include <stdio.h>
#include <string.h>
int A[1000005],B[20];
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]; i++, t/=10)
A[i] = (t += A[i] + B[i]) % 10;
while (i<=A[0] || t)
{
A[i] = (t += A[i]) % 10;
t/=10;
i++;
}
A[0] = i - 1;
}
void invert ()
{
long long i = 0,t = 0;
for (i = 1; i <= A[0] / 2; i++)
{
t = A[i];
A[i] = A[ A[0] - i + 1 ];
A[ A[0] - i + 1 ] = t;
}
}
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')
{
A[ ++A[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;
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;
}