Pagini recente » Cod sursa (job #942593) | Cod sursa (job #1192453) | Cod sursa (job #1500428) | Cod sursa (job #2013557) | Cod sursa (job #1803619)
#include <iostream>
#include <fstream>
using namespace std;
const int NMAX = 1000000;
char v[NMAX + 1];
int lg;
long long D;
long long lung(char *a)
{
int i = 0;
while(a[i]) a[i++] -= 48;
return i;
}
void inversare()
{
int i = 1, j = lg - 1;
v[lg] = v[0];
while(i < j)
swap(v[i++], v[j--]);
}
long long modulo(char *a, long long b)
{
long long r = 0;
for(int i = lg; i > 0; i--)
r = (r * 10 + a[i]) % b;
return r;
}
void adun(char *a, long long b)
{
long long t = b;
for(int i = 1; i <= lg; i++)
{
t += a[i];
a[i] = t % 10;
t /= 10;
}
while(t)
{
a[++lg] = t % 10;
t /= 10;
}
}
int main()
{
ifstream f("next.in");
ofstream g("next.out");
f.getline(v, NMAX + 1);
f >> D;
lg = lung(v);
inversare();
long long r = modulo(v, D);
if(r != 0)
adun(v, D - r);
for(int i = lg; i > 0; i--)
g << int(v[i]);
f.close();
g.close();
return 0;
}