Pagini recente » Cod sursa (job #2226969) | Cod sursa (job #766669) | Cod sursa (job #2056775) | Cod sursa (job #509250) | Cod sursa (job #2108914)
#include <iostream>
#include<fstream>
#include<string.h>
using namespace std;
ifstream f("next.in");
ofstream g("next.out");
char s[1000003];
int a[1000003], t[1000003];
long long d;
unsigned long Divide(int A[], unsigned long X)
/* A <- A/X si intoarce A%X */
{
int i;
unsigned long R = 0;
for(i = A[0]; i; i--)
{
A[i] = (R = 10 * R + A[i]) / X;
R %= X;
}
while(!A[A[0]] && A[0] > 1) A[0]--;
return R;
}
void Add(int A[], int B[])
/* A <- A+B */
{
int i, T = 0;
if(B[0] > A[0])
{
for(i = A[0] + 1; i <= B[0];) A[i++] = 0;
A[0] = B[0];
}
else for(i = B[0] + 1; i <= A[0];) B[i++] = 0;
for(i = 1; i <= A[0]; i++)
{
A[i] += B[i] + T;
T = A[i] / 10;
A[i] %= 10;
}
if(T) A[++A[0]] = T;
}
int main()
{
int cif = 0;
f.getline(s, 1000003);
f >> d;
a[0] = strlen(s);
for(int i = strlen(s); i >= 1; i--)
a[i] = s[strlen(s) - i] - 48;
long long r = Divide(a, d);
for(int i = strlen(s); i >= 1; i--)
a[i] = s[strlen(s) - i] - 48;
a[0] = strlen(s);
if(r==0)
for(int i = a[0]; i >= 1; i--)
g << a[i];
else
{r = d - r;
for(int i = 1; r; i++)
{
cif++;
t[i] = r % 10;
r /= 10;
}
t[0] = cif;
Add(a, t);
for(int i = a[0]; i >= 1; i--)
g << a[i];}
return 0;
}