Pagini recente » Cod sursa (job #712053) | Cod sursa (job #397509) | Cod sursa (job #1983217) | Cod sursa (job #337985) | Cod sursa (job #2258218)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("next.in");
ofstream fout("next.out");
///12288KB=10.000.000B(10milioane B)
const int NMAX=1000003;
char s[NMAX];
int a[NMAX];
int dd[22];
int c[NMAX];
void citire(int a[NMAX])
{
int n,i;
fin.getline(s,NMAX);
n=strlen(s);
a[0]=0;
for(i=n; i>=1; i--)
a[++a[0]]=s[i-1]-'0';
}
void print(int a[])
{
int i;
for(i=a[0]; i>=1; i--)
fout<<a[i];
}
long long mod(int a[],long long x)
{
long long r;
int i;
r=0;
for(i=a[0]; i>=1; i--)
{
r=r*10+a[i];
r=r%x;
}
return r;
}
void adun(int a[],int b[],int c[NMAX])
{
int i,tr,aux;
memset(c,0,NMAX);
c[0]=a[0];
if(b[0]>c[0])
c[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>0)
c[++c[0]]=tr;
}
int main()
{
unsigned long long D,rest;
citire(a);
fin>>D;
rest=D-mod(a,D);
if(rest==D)
{
print(a);
return 0;
}
while(rest)
{
dd[++dd[0]]=rest%10;
rest/=10;
}
adun(a,dd,c);
print(c);
return 0;
}