Cod sursa(job #120342)

Utilizator MarquiseMarquise Marquise Data 4 ianuarie 2008 23:04:09
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>
#define NMAX 1000010

long long x[NMAX];
long long d, t, n;


void rest()
{
	int i;
	for ( i = n; i>=1; i--)
		t = ( t * 10 + x[i]) % d;
}

void adun()
{

	long long v = 0, i;
	x[1] += t;
	for ( i = 1; i <=n || v; i++, v /=10)
		x[i] = ( v += x[i] )%10;
	x[0] = i-1;
}

int main()
{
	char c;
	int i;
	long long aux;
	freopen("next.in", "r", stdin);
	freopen("next.out", "w", stdout);
	scanf("%c", &c);
	while ( c >='0' && c <='9')
	{
		n++;
		x[n] = c - '0';
		scanf("%c", &c);
	}
	scanf("%lld", &d);
	for ( i = 1; i <= n/2; i++)
	{
		aux = x[i];
		x[i] = x[n-i+1];
		x[n-i+1] = aux;
	}
	rest();

	if ( t == 0)
	{
		for ( i = n; i >= 1; i--)
			printf("%lld", x[i]);
	}
	else
	{
		t = d - t;
		adun();
		for ( i = x[0]; i >= 1; i--)
			printf("%lld", x[i]);
	}
	return 0;

}