Pagini recente » Cod sursa (job #1773319) | Cod sursa (job #2587040) | Cod sursa (job #3134579) | Cod sursa (job #2333738) | Cod sursa (job #2222217)
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
class huge{
private:
char a[1000005];
int l;
public:
void Read(){
gets(a + 1);
l = strlen(a + 1);
reverse(a + 1, a + l + 1);
}
void Set(long long k){
l = 0;
while(k > 0){
a[++l] = k % 10 + '0';
k /= 10;
}
}
long long operator/ (long long k){
long long i, r;
r = 0;
for(i = l;i > 0;i--){
r = 1LL * r * 10 + 1LL * a[i] - 1LL * '0';
r %= k;
}
return r;
}
void operator += (const huge &b){
int i, tr = 0;
i = 0;
while((i < l || i < b.l) || tr){
a[++i] = a[i] + b.a[i] + tr - (i <= l) * '0' - (i <= b.l) * '0';
tr = a[i] / 10;
a[i] = a[i] % 10;
a[i] += '0';
}
}
void prt(){
reverse(a + 1, a + l + 1);
printf("%s", a + 1);
reverse(a + 1, a + l + 1);
}
};
int main()
{
freopen("next.in", "r", stdin);
freopen("next.out", "w", stdout);
huge a, b;
long long k;
a.Read();
scanf("%lld", &k);
k = (k - a / k) % k;
b.Set(k);
a += b;
a.prt();
return 0;
}