Pagini recente » Cod sursa (job #3223975) | Cod sursa (job #3003381) | Cod sursa (job #3004788) | Cod sursa (job #1966146) | Cod sursa (job #2395034)
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int NMAX = 1000005;
long long rest_impart_huge_int(int a[NMAX],long long k)
{
int i;
long long r = 0;
for(i = a[0];i >= 1;i--)
{
r = r * 10 + a[i];
r = r % k;
}
return r;
}
void h_adun(int a[NMAX],int b[25])
{
// memset(c,0,sizeof(c));
int i,tr,aux;
a[0] = max(a[0],b[0]);
tr = 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;
tr = tr / 10;
}
}
int main()
{
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
char ch;
int a[NMAX],i,b[25];
long long d,r;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
while(scanf("%c",&ch) == 1 && ch != '\n')
{
if(ch >= '0' && ch <= '9')
a[++a[0]] = ch - '0';
}
reverse(a + 1,a + a[0] + 1);
scanf("%lld",&d);
r = rest_impart_huge_int(a,d);
if(r)
{
r = d - r;
do
{
b[++b[0]] = r % 10;
r = r / 10;
}while(r);
h_adun(a,b);
for(i = a[0];i >= 1;i--)
printf("%d",a[i]);
}
else
for(i = a[0];i >= 1;i--)
printf("%d",a[i]);
return 0;
}