Pagini recente » Istoria paginii runda/3333333333333/clasament | Cod sursa (job #2540296) | Cod sursa (job #3210457) | Cod sursa (job #1969344) | Cod sursa (job #2393904)
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int NMAX = 1000005;
int rest_impart_huge_int(int a[],int k)
{
int i,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[],int c[NMAX])
{
memset(c,0,sizeof(c));
int i,tr,aux;
c[0] = max(a[0] , b[0]);
tr = 0;
for(i = 1;i <= c[0];i++)
{
aux = a[i] + b[i] + tr;
c[i] = aux % 10;
tr = aux / 10;
}
if(tr)
c[++c[0]] = tr;
}
int main()
{
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
char ch;
int a[NMAX],i,r,b[25],c[NMAX];
long long d;
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,c);
}
for(i = c[0];i >= 1;i--)
printf("%d",c[i]);
return 0;
}