Cod sursa(job #123095)

Utilizator alex_mircescuAlex Mircescu alex_mircescu Data 14 ianuarie 2008 17:19:39
Problema Next Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <stdio.h>
#include <math.h>
#include <string.h>

long long dv, rest, len, i, sum;
long a[1000010], v_sum[1000010];
char n[1000010];

long rest_fun() {
	long ipr = 0;
	for (ipr = v_sum[0]; ipr >= 1; --ipr) {
		rest = rest * 10 + v_sum[ipr];
		if (rest > dv) {
			rest = rest % dv;
		}
	}
	return 0;
}

long afis_sum() {
	long ipr = 0, t = 0, aux = 0;
	for (ipr = 1; ipr <= v_sum[0] || ipr <= a[0]; ++ipr) {
		aux = v_sum[ipr] + a[ipr] + t;
		v_sum[ipr] = aux % 10;
		t = aux / 10;
	}
	if (t != 0) {
		v_sum[++v_sum[0]] = t;
		t = 0;
	}
	for (ipr = v_sum[0]; ipr >= 1; --ipr) {
		printf("%ld", v_sum[ipr]);
	}
	return 0;
}

int main() {
	freopen("next.in", "r", stdin);
	freopen("next.out", "w", stdout);
	scanf("%s", n);
	len = strlen(n);
	for (i = len - 1; i >= 0; --i) {
		v_sum[++v_sum[0]] = (long)(n[i] - '0');
	}
	scanf("%lld", &dv);
	rest_fun();
	sum = dv - rest;
	while (sum != 0) {
		a[++a[0]] = sum % 10;
		sum /= 10;
	}
	afis_sum();
	printf("\n");
	return 0;
}