Pagini recente » Cod sursa (job #1048951) | Cod sursa (job #1556761) | Cod sursa (job #1369624) | Cod sursa (job #2696071) | Cod sursa (job #2614970)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("next.in");
ofstream g("next.out");
char n[1000005];
long long d;
int lgn;
void adunare(char a[1000005], int &lg, long long x)
{
long long t = x;
for (int i=1; i<=lg; i++)
{
t += a[i];
a[i] = t % 10;
t /= 10;
}
while (t)
{
lg++, a[lg] = t;
t /= 10;
}
}
void impartire(char a[1000005], int &lg, long long x, long long &r)
{
r = 0;
for (int i=lg; i; i--)
{
r = r * 10 + a[i];
a[i] = r / x;
r = r % x;
}
while (a[lg] == 0 && lg > 1)
lg--;
}
void inmultire(char a[1000005], int &lg, long long x)
{
long long t = 0;
for (int i=1; i<=lg; i++)
{
t += x * a[i];
a[i] = t % 10;
t /= 10;
}
while (t)
{
lg++, a[lg] = t % 10;
t /= 10;
}
}
int main()
{
f >> n+1 >> d;
lgn = strlen(n+1);
for (int i=1; i<=lgn; i++)
n[i] -= '0';
for (int i=1, lg=lgn/2; i<=lg; i++)
swap(n[i], n[lgn-i+1]);
long long r; impartire(n, lgn, d, r);
if (r) adunare(n, lgn, 1);
inmultire(n, lgn, d);
for (int i=lgn; i; i--)
g << int(n[i]);
return 0;
}