Pagini recente » Cod sursa (job #953048) | Istoria paginii utilizator/iedy2020 | Istoria paginii utilizator/ilie6969 | Istoria paginii utilizator/droghyyy | Cod sursa (job #2185969)
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int NMAX = 10000000;
int a[NMAX + 5] , b[NMAX + 5] , c[NMAX + 5] , d[25];
char s[NMAX + 5];
void huge_sum(int a[] , int b[] , int c[])
{
int i , tr;
memset(c , 0 , sizeof(c));
c[0] = max(a[0] , b[0]);
tr = 0;
for(i = 1 ; i <= c[0] ; i ++)
{
c[i] = (a[i] + b[i] + tr) % 10;
tr = (a[i] + b[i] + tr) / 10;
}
if(tr != 0)
c[++ c[0]] = tr;
}
long long huge_imp(int a[] , int c[] , long long &r , long long k)
{
memset(c , 0 , sizeof(c));
int i;
r = 0;
for(i = a[0] ; i >= 1 ; i --)
{
r = r * 10 + a[i];
c[++ c[0]] = r / k;
r = r % k;
}
reverse(c + 1 , c + c[0] + 1);
while(c[c[0]] == 0 && c[0] > 1)
c[0] --;
return r;
}
int main()
{
freopen("next.in" , "r" , stdin);
freopen("next.out" , "w" , stdout);
int d , i;
long long r , k;
gets(s);
scanf("%lld" , &k);
a[0] = strlen(s);
for(i = 0 ; i < a[0] ; i ++)
a[a[0] - i] = s[i] - '0';
r = huge_imp(a , b , r , k);
if(r == 0)
printf("%s\n" , s);
else
{
k = k - r;
b[0] = 0;
while(k > 0)
{
b[++ b[0]] = k % 10;
k = k / 10;
}
huge_sum(a , b , c);
for(i = c[0] ; i >= 1 ; i --)
printf("%d" , c[i]);
}
return 0;
}