Pagini recente » Cod sursa (job #2576976) | Cod sursa (job #1295044) | Cod sursa (job #2813784) | Cod sursa (job #1767931) | Cod sursa (job #313768)
Cod sursa(job #313768)
#include <fstream>
#include <cstring>
using namespace std;
const int maxcif = 1000005;
ifstream in("next.in");
ofstream out("next.out");
int *p, bigdiff[60] = {0};
char buf[maxcif];
long long d;
void read()
{
in >> buf;
in >> d;
p = new int[maxcif];
for ( int i = 0; i < maxcif; ++i ) p[i] = 0;
for ( int i = strlen(buf) - 1; i >= 0; --i )
p[ ++p[0] ] = buf[i] - '0';
}
long long getmod()
{
long long t = 0;
for ( int i = p[0]; i > 0; --i )
t = (long long)((long long)t * 10LL + p[i]) % d;
return t;
}
void makebig(long long t)
{
while ( t > 0 )
{
bigdiff[ ++bigdiff[0] ] = t % 10LL;
t /= 10LL;
}
}
void add()
{
int s = 0, c = 0;
int t = p[0];
p[0] = 0;
for ( int i = 1; i <= bigdiff[0] || i <= t; ++i )
{
if ( i < 50 )
s = p[i] + bigdiff[i] + c;
else
s = p[i] + c;
p[ ++p[0] ] = s % 10;
c = s / 10;
}
if ( c )
p[ ++p[0] ] = c;
}
void print()
{
for ( int i = p[0]; i > 0; --i )
out << p[i];
}
int main()
{
read();
long long diff = d - getmod();
makebig(diff % d);
add();
print();
return 0;
}