Pagini recente » Cod sursa (job #2259761) | Cod sursa (job #2714505) | Cod sursa (job #307073) | Cod sursa (job #2936555) | Cod sursa (job #2395013)
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int NMAX = 100005;
long long rest_impart_huge_int(int a[],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[],int b[])
{
// memset(c,0,sizeof(c));
int i,tr,aux;
tr = 0;
for(i = 1;i <= a[0];i++)
{
aux = a[i] + b[i] + tr;
a[i] = aux % 10;
tr = aux / 10;
}
if(tr)
a[++a[0]] = tr;
}
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("%I64d",&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;
}