Pagini recente » Cod sursa (job #1426056) | Cod sursa (job #1220418) | Cod sursa (job #1371028) | Cod sursa (job #1791742) | Cod sursa (job #55545)
Cod sursa(job #55545)
#include <fstream>
using namespace std;
#define in "next.in"
#define out "next.out"
#define NMAX 1000001
long long D;
int a[NMAX], b[NMAX], ind, n, sir[NMAX];
char c;
void Read();
void Solve();
void Write();
int mod(int A[], int B);
void add(int A[], int B[]);
void add(int A[], int B[])
{
int 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;
}
ofstream fout ( out );
long long mod(int A[], long long B)
{
int i;
long long t = 0;
for (i = A[0]; i > 0; i--)
t = (t * 10 + A[i]) % B;
return t;
}
int main()
{
Read();
Solve();
//Write();
fout.close();
return 0;
}
void Read()
{
ifstream fin( in );
int i;
ind = 1;
while ( fin.peek() != '\n' )
{
fin >> c;
a[ind] = c - 48;
ind++;
}
ind--;
a[0] = ind;
n = 1;
for ( i = ind; i >= 1; i-- )
{
b[n] = a[i];
n++;
}
n--; b[0] = n;
fin.get();
fin >> D;
fin.close();
}
void Write()
{
int i;
for ( i = b[0]; i >= 1; --i )
{
fout << b[i];
}
fout << "\n" << D << "\n";
}
void Solve()
{
int i;
long long r = mod( b, D );
long long rest = (D-r)%D;
int dim = 1;
long long restt = rest;
while ( restt )
{
sir[dim] = restt % 10;
restt /= 10;
dim++;
}
dim--;
sir[0] = dim;
/*for ( i = dim; i >= 1; --i )
fout << sir[i];*/
add( b, sir );
for ( i = b[0]; i >= 1; --i )
fout << b[i];
//fout << "\n";
}