Pagini recente » Cod sursa (job #587336) | Cod sursa (job #1824816) | Cod sursa (job #2723353) | Cod sursa (job #1776686) | Cod sursa (job #2258202)
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;
ifstream fin("next.in");
ofstream fout("next.out");
const int NMAX=1000000;
int n[NMAX], r[NMAX], sol[NMAX];
void citire(int v[NMAX])
{
int i, n;
char s[NMAX];
fin.getline(s, NMAX);
n=strlen(s);
memset(v, 0, NMAX*4);
for(i=n-1;i>=0;i--)
{
v[++v[0]]=s[i]-'0';
}
}
void print(int v[NMAX])
{
for(int i=v[0];i>=1;i--)
{
fout<<v[i];
}
fout<<"\n";
}
void adunare(int a[NMAX], int b[NMAX], int c[NMAX])
{
int tr=0, i, aux;
c[0]=max(a[0], b[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;
}
void rest_huge_long(int a[NMAX],long long k, int c[NMAX])
{
long long r=0;
int i;
for(i=a[0];i>=1;i--)
{
r=r*10+a[i];
r=r%k;
}
r=k-r;
while(r)
{
c[++c[0]]=r%10;
r=r/10;
}
}
int main()
{
long long d;
citire(n);
fin>>d;
rest_huge_long(n, d, r);
adunare(n, r, sol);
print(sol);
return 0;
}