Pagini recente » Istoria paginii utilizator/oanadagreat | Cod sursa (job #1593460) | Cod sursa (job #2002215) | Monitorul de evaluare | Cod sursa (job #1687952)
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("next.in");
ofstream out("next.out");
const int NMAX = 1000000;
int a[NMAX+15];
char s[NMAX+15];
char b[NMAX+5];
long long rest_hn_int(int a[], long long k)
{int i;
long long r;
r = 0;
for(i = a[0]; i >= 1; i--)
{r = r * 10 + a[i];
r = r % k;
}
return r;
}
void adunh(int a[], char b[])
{int i, tr, aux, l, max;
tr = 0;
if(a[0] > b[0])
l = a[0];
else
l = b[0];
for(i = 1; i <= a[0]; i++)
{aux = a[i] + b[i] + tr;
a[i] = aux % 10;
tr = aux / 10;
}
while(tr)
{a[++a[0]] = tr % 10;
tr = tr / 10;
}
}
void printh(int x[])
{for(int i = x[0]; i >= 1; --i)
out<<x[i];
out<<endl;
}
int main()
{long long d, r;
int n, i;
in.getline(s, NMAX+1);
in>>d;
n = strlen(s);
a[0] = n;
for(i = n - 1; i >= 0; i--)
a[n - i] = s[i] - '0';
r = rest_hn_int(a, d);
if(r)
{d = d - r;
//a + d;
memset(b,0,sizeof(b));
do{b[++b[0]] = d % 10;
d = d/ 10;
} while(d);
adunh(a, b);
}
printh(a);
return 0;
}