Pagini recente » Cod sursa (job #2535188) | Cod sursa (job #881174) | Cod sursa (job #231410) | Cod sursa (job #2772826) | Cod sursa (job #876042)
Cod sursa(job #876042)
#include<fstream>
#include<iostream>
#include<string>
#include<math.h>
using namespace std;
void afisare(short *v, int nr)
{
for(int i=0;i<nr;i++) {
cout << v[i];
}
cout << endl;
}
int main()
{
ifstream f("next.in");
ofstream g("next.out");
string n;
unsigned long long d;
f>>n;
f>>d;
int nrcf=0,cd=d;
while(cd)
{
nrcf++;
cd/=10;
}
int nr = n.length();
short *v = new short[nr];
short *w = new short[nr];
for(int i=0;i<nr;i++)
{
v[i] = (short)(n[i]-'0');
w[i]=v[i];
}
unsigned long long num;
unsigned long long r = 0;
for(int i=0;i<nr;i++)
{
if(v[i] == 0) {
continue;
}
if(nr-i >= nrcf) {
num=0;
for(int j=i;j<=nrcf;j++)
{
num=num*10+v[j];
}
unsigned long long rest=num%d;
r = rest;
for(int j=nrcf;j>=i;j--) {
v[j] = rest%10;
rest/=10;
}
}
}
if(r == 0) {
g << n;
} else {
unsigned long long add = d-r;
bool overflow = false;
for(int i=nr-1;i>=0;i--) {
if(add > 0) {
w[i] = w[i]+add%10;
if(overflow) {
w[i]++;
overflow=false;
}
if(w[i] >= 10) {
overflow = true;
w[i] -= 10;
}
add /= 10;
} else {
if(overflow) {
w[i]++;
overflow=false;
}
if(w[i] >= 10) {
overflow = true;
w[i] -= 10;
} else {
break;
}
}
}
if(overflow) {
g << "1";
}
int i=0;
for(int i=0;i<nr;i++)
g << w[i];
}
/*
unsigned long long rest = n%d;
if(rest == 0) {
g << n;
} else {
g<<(n-rest+d);
}
*/
f.close();
g.close();
return 0;
}