Pagini recente » Cod sursa (job #824001) | Cod sursa (job #2061320) | Cod sursa (job #1979338) | Cod sursa (job #1206260) | Cod sursa (job #986485)
Cod sursa(job #986485)
#include <fstream>
#include <string.h>
#include <algorithm>
using namespace std;
ifstream f("next.in");
ofstream g("next.out");
long long D;
int N[1000002],V[18];
char Aux[1000002];
void Swap(int& x,int& y)
{
int aux;
aux=x;
x=y;
y=aux;
}
bool is_digit(char ch)
{
return ch>='0' && ch<='9';
}
void Read()
{
f.getline(Aux,1000000);
int i=0;
while(1)
{
if(Aux[i]==0)
f.getline(Aux,1000000),i=0;
if(is_digit(Aux[i])==1)
break;
i++;
}
while(Aux[i]!=0)
{
if(is_digit(Aux[i])==1)
{
N[i+1]=Aux[i]-'0';
N[0]++;
}
i++;
}
i=0;
f.getline(Aux,1000000);
while(Aux[i]!=0)
{
if(is_digit(Aux[i])==1)
D=D*10+Aux[i]-'0';
i++;
}
for(i=1;i<=N[0];i++)
if(i<=N[0]/2)
Swap(N[i],N[N[0]-i+1]);
}
void add(int A[], int B[])
{
int i, t = 0;
for (i=1; i<=A[0] || i<=B[0] || t; i++, t/=10)
A[i] = (t += A[i] + B[i]) % 10;
A[0] = i - 1;
}
void AtribValue(int H[], long long X) {
H[0] = 0;
while (X) {
++H[0];
H[H[0]] = X % 10;
X /= 10;
}
}
long long Mod(int A[],long long X)
/* Intoarce A%X */
{ int i;
unsigned long R=0;
for (i=A[0];i;i--)
R=(10*R+A[i])%X;
return R;
}
void Solve()
{
long long Rest=Mod(N,D);
AtribValue(V,D-Rest);
add(N,V);
for(int i=N[0];i>=1;i--)
g<<N[i];
g<<"\n";
}
int main()
{
Read();
Solve();
/*for(int i=1;i<=99999;i++)
g<<9;
g<<"\n";
g<<10000000000000000;*/
return 0;
}