Pagini recente » Cod sursa (job #1163042) | Cod sursa (job #342653) | Rating Eduard Verestiuc (eduardverestiuc) | Cod sursa (job #1415251) | Cod sursa (job #988108)
Cod sursa(job #988108)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
#define Nmax 1500000
typedef unsigned BigInteger[Nmax];
BigInteger N;
string s;
uint64_t D;
void read()
{
ifstream f("next.in");
f >> s >> D;
f.close();
}
void init()
{
for ( int i = s.length() - 1; i >= 0; i-- )
N[ ++N[0] ] = s[i] - 48;
}
uint64_t modulo( BigInteger a, uint64_t divi )
{
uint64_t R = 0;
for ( uint64_t i = a[0]; i; i-- )
{
R = R * 10 + a[i];
R %= divi;
}
return R;
}
void inmult( BigInteger &a, uint64_t x )
{
uint64_t T = 0;
for ( uint64_t i = 1; i <= a[0]; ++i )
{
a[i] = ( a[i] * x + T );
T = a[i] / 10;
a[i] %= 10;
}
while ( T )
a[ ++a[0] ] = T % 10,
T /= 10;
}
void aduna( BigInteger &a, uint64_t x )
{
uint64_t T = x;
for ( uint64_t i = 1; i <= a[0]; ++i )
{
a[i] = ( a[i] + T );
T = a[i] / 10;
a[i] %= 10;
}
if ( T )
a[ ++a[0] ] = T;
}
void afis( BigInteger a )
{
ofstream g("next.out");
for ( uint64_t i = a[0]; i >= 1; i-- )
g << a[i] ;
g << "\n";
g.close();
}
int main()
{
read();
init();
uint64_t R = modulo( N, D );
if ( R )
aduna( N, D - R );
afis( N );
return 0;
}