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