Pagini recente » Cod sursa (job #1612070) | Cod sursa (job #3178932) | Cod sursa (job #382884) | Cod sursa (job #2685819) | Cod sursa (job #38631)
Cod sursa(job #38631)
#include <stdio.h>
#include <string>
#include <fstream>
using namespace std;
#define in "next.in"
#define out "next.out"
#define dim 1000002
long long size;
int A[dim];
int nr[4044];
long long d, t=0;
char c[dim];
char d2[40];
int main()
{
int k;
char ch;
size=0;
k = 0;
d=0;
FILE *fin = fopen(in,"r");
fgets(c,dim-1,fin);
fscanf(fin,"%lld",&d);
fclose(fin);
freopen(out,"w",stdout);
while ( c[size] >= '0' && c[size] <= '9' ) size++;
int i;
size -= 1;
for (i = 0; i <= size; i++ )
A[size-i+1] = (int)c[i]-48;
A[0] = size+1;
long long t = 0;
for ( i = A[0]; i >= 1; i-- )
{
t = (t * 10 + A[i] ) % d;
}
if ( t == 0 )
{
for ( i = A[0]; i >= 1; i-- )
printf("%d",A[i]);
}
else
{
nr[0] = 0;
long long v = labs(d-t)%d;
while ( v ) { nr[0]++, nr[nr[0]] = v % 10, v /= 10; };
long long q = 0;
for ( i = 1; i <= A[0] || i <= nr[0] || q; i++, q/=10 )
{
if ( i > nr[0] ) A[i] = (q += A[i] ) % 10;
else A[i] = (q += A[i] + nr[i]) % 10;
}
A[0] = i - 1;
for ( i = A[0]; i >= 1; i-- )
printf("%d", A[i]);
}
}