Cod sursa(job #37451)

Utilizator bogdan2412Bogdan-Cristian Tataroiu bogdan2412 Data 25 martie 2007 09:50:14
Problema Next Scor 100
Compilator cpp Status done
Runda preONI 2007, Runda 4, Clasa a 9-a si gimnaziu Marime 0.77 kb
#include <stdio.h>

#define MAXL 1000005
#define LLU unsigned long long

LLU D;
int N[MAXL];

char tmp[MAXL];

LLU mod( int A[], LLU B )
{
	int i; LLU t = 0;
	for (i = A[0]; i > 0; i--)
		t = (t * 10 + A[i]) % B;
	return t;
}

void add( int A[], LLU B )
{
	int i, t = 0;
	for (i = 1; i <= A[0] || B || t; i++, t /= 10, B /= 10)
		A[i] = (t += A[i] + B % 10) % 10;
	A[0] = i - 1;
}

int main()
{
	freopen("next.in", "rt", stdin);
	freopen("next.out", "wt", stdout);

	fgets(tmp, MAXL, stdin);
	int k;
	for (k = 0; '0' <= tmp[k] && tmp[k] <= '9'; k++);
	for (k--; k >= 0; k--)
		N[++N[0]] = tmp[k] - '0';
	for (; N[N[0]] == 0 && N[0]; N[0]--);

	scanf(" %llu ", &D);

	LLU B = (D - mod(N, D)) % D;
	add(N, B);

	for (int i = N[0]; i; i--)
		printf("%d", N[i]);
	printf("\n");

	return 0;
}