Cod sursa(job #41031)

Utilizator webspiderDumitru Bogdan webspider Data 27 martie 2007 21:59:23
Problema Next Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>
#include <iostream>
#include <string.h>

using namespace std;

typedef int lnum[1000001];

char s[1000001];
long long d;
lnum n;
long long aux;


int main()
{
	int i,j;
	freopen("next.in","r",stdin);
	freopen("next.out","w",stdout);

	scanf("%s\n", &s );
	n[0] = strlen( s );
	for ( i = 1, j = n[0]-1; i <= n[0]; i++, j-- )
		n[i] = s[j]-'0';
	
	scanf("%ld\n", &d );
	
	i = n[0]+1;
	aux = 0;

	while ( i > 1 )
	{
		if ( aux < d ) 	{
			aux *= 10;
			aux += n[--i];
			if ( aux > d )
				aux = aux % d;
		}
	}
	d -= aux;
	if ( aux == 0 ) d = 0;

	n[1] += d;

	for ( i = 1; i <= n[0]; i++ )
	{
		n[i+1] += n[i] / 10;
		n[i] = n[i] % 10;
		if ( i == n[0] && n[i+1] ) n[0]++;
	}

	for ( i = n[0]; i >= 1; i-- )
		printf("%d", n[i] );

	fclose(stdin);
	fclose(stdout);

	return 0;
}