Pagini recente » Cod sursa (job #1863393) | Cod sursa (job #3230411) | Cod sursa (job #555177) | Cod sursa (job #145096) | Cod sursa (job #986237)
Cod sursa(job #986237)
#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],N2[1000002];
char Aux[1000002];
void reverse(int first,int last)
{
while ((first!=last)&&(first!=--last)) {
swap (N[first],N[last]);
++first;
}
}
void Read()
{
f.getline(Aux,1000000);
int i=0;
while(Aux[i]!=0)
{
N[i+1]=Aux[i]-'0';
N[0]++;
i++;
}
for(i=1;i<=N[0];i++)
N2[N[0]-i+1]=N[i];
N2[0]=N[0];
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(N2,D);
AtribValue(V,D-Rest);
add(N2,V);
for(int i=N2[0];i>=1;i--)
g<<N2[i];
g<<"\n";
}
int main()
{
Read();
Solve();
return 0;
}