Pagini recente » Cod sursa (job #2762183) | Cod sursa (job #2264765) | Cod sursa (job #2264711) | Cod sursa (job #43882) | Cod sursa (job #44678)
Cod sursa(job #44678)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define fin "next.in"
#define fout "next.out"
#define NMAX 1000010
int N[NMAX];
long long D;
FILE *f,*g;
void write(int A[])
{
g = fopen(fout,"w");
for ( int i = A[0] ; i ; --i)
fprintf(g,"%d",A[i]);
fclose(g);
}
void readData()
{
f = fopen(fin,"r");
char * s = (char*) malloc(NMAX);
fgets(s,NMAX,f);
N[0] = strlen(s) - 1; //fara newline
for ( int i = N[0] ; i ; --i)
N[i] = s[N[0] - i] - '0';
fscanf(f,"%lld",&D);
fclose(f);
}
void attrib(int A[] , long long x) // A = x
{
do
{
A[++A[0]] = x % 10;
x /= 10;
}
while(x);
}
void add(int A[] , int B[]) // A = A + B
{
int i,t;
for ( i = 1 , t = 0 ;i<=A[0] | i<=B[0] | t ; ++i,t/=10)
A[i] = (t += A[i] + B[i]) % 10;
A[0] = i-1;
}
void mod(int X[], long long &Y, long long &R) // R = X % Y
{
for ( int i = X[0] ; i ; --i )
{
R = R * 10 + X[i];
while(R>=Y) R-=Y;
}
}
int C1[NMAX];
void solve()
{
long long r = 0;
mod(N,D,r);
if(r)
{
attrib(C1,D - r);
add(N,C1);
}
write(N);
}
int main()
{
readData();
solve();
return 0;
}