Pagini recente » Cod sursa (job #1330676) | Monitorul de evaluare | Monitorul de evaluare | Clasament dupa rating | Cod sursa (job #1006075)
#include <iostream>
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;
const int NMAX = 1000050;
int V[NMAX];
long long D;
char S[NMAX];
void Div()
{
int i;
long long T = 0;
for(i = V[0]; i >= 1; -- i, T %= D)
V[i] = (T = 1LL * T * 10 + V[i]) / D;
for(; V[0] > 1 && !V[V[0]]; V[0] --);
}
long long Mod()
{
int i;
long long T = 0;
for(i = V[0]; i >= 1; -- i)
T = (1LL * T * 10 + V[i]) % D;
return T;
}
void Increment()
{
for(int i = 1; i <= V[0]; ++ i)
{
V[i] ++;
if(V[i] == 10) V[i] = 0, V[i + 1] ++;
}
if(V[V[0]] == 10) V[V[0]] = 0, V[0] ++, V[V[0]] = 1;
}
void Mult()
{
int i;
long long T = 0;
for(i = 1; i <= V[0] || T; ++ i, T /= 10)
V[i] = (T += 1LL * V[i] * D) % 10;
V[0] = i - 1;
}
int main()
{
ifstream cin("next.in");
ofstream cout("next.out");
cin >> (S + 1);
cin >> D;
int N = strlen(S + 1);
for(int i = N; i; -- i)
V[++V[0]] = S[i] - '0';
if(Mod() == 0)
{
for(int i = V[0]; i; -- i)
cout << V[i];
return 0;
}
Div();
Increment();
Mult();
for(int i = V[0]; i; -- i)
cout << V[i];
return 0;
}