Pagini recente » Rating Lascu Andrei Marian (Lascu_Andrei_Marian_324CB) | Cod sursa (job #843051) | Cod sursa (job #2832522) | Cod sursa (job #827923) | Cod sursa (job #986486)
Cod sursa(job #986486)
#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()
{
int i=0;
f>>noskipws;
char ch;
while(1)
{
f>>ch;
if(is_digit(ch)==1){
N[++N[0]]=ch-'0';
break;
}
}
while(ch!='\n')
{
f>>ch;
N[++N[0]]=ch-'0';
}
for(i=1;i<=N[0];i++)
if(i<=N[0]/2)
Swap(N[i],N[N[0]-i+1]);
f>>D;
}
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;
}