Pagini recente » Cod sursa (job #2156198) | Cod sursa (job #2735499) | Cod sursa (job #3191596) | Cod sursa (job #609673) | Cod sursa (job #57171)
Cod sursa(job #57171)
//100 puncte
#include <stdio.h>
#define in "next.in"
#define out "next.out"
#define NMAX 1000005
long long D, R, rest;
char a[NMAX], b[NMAX], sir[NMAX];
int ind, n, m;
void Read();
void Solve();
long long mod(char A[], long long B);
void add( char A[], char B[] );
FILE *fout = fopen( out, "w" );
int main()
{
Read();
Solve();
fclose( fout );
return 0;
}
void Read()
{
FILE *fin = fopen( in, "r" );
char c; ind = 1;
while ( fscanf( fin, "%c", &c ) && c != '\n' )
{
a[ind] = c - 48;
ind++;
}
fscanf( fin, "%lld", &D );
ind--;
//a[0] = ind;
fclose( fin );
}
void Solve()
{
int i;
n = 1;
for ( i = ind; i >= 1; --i )
{
b[n] = a[i];
n++;
}
n--;
//b[0] = n;
R = mod( b, D );
rest = ( D - R ) % D;
m = 1;
while ( rest )
{
sir[m] = rest % 10;
rest /= 10;
m++;
}
m--;
//sir[0] = m;
add( b, sir );
//AFISAREA
for ( i = n; i >= 1; --i )
{
fprintf( fout, "%d", b[i] );
}
}
long long mod(char A[], long long B)
{
int i;
long long t = 0;
for (i = n; i > 0; i--)
t = (t * 10 + A[i]) % B;
return t;
}
void add(char A[], char B[])
{
int i, t = 0;
for (i=1; i<=n || i<=m || t; i++, t/=10)
A[i] = (t += A[i] + B[i]) % 10;
n = i - 1;
}