Cod sursa(job #273894)

Utilizator ooctavTuchila Octavian ooctav Data 9 martie 2009 10:13:52
Problema Next Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <stdio.h>
#include <string.h>

const int N=1000001;
char c[N-1];
int  c2[N-1];
int e[N-1];
long long d,rest=0;

void obtinere()
{
	int  i,nr=1;
	fgets(c+1,N-1,stdin);
	for(i=1;i<=N;i++)
		if(c[i]=='\n')
			break;
		else
			c2[0]++;
	c[c2[0]+1]=0;
	for(i=c2[0];i>=1;i--)
		c2[nr++]=c[i]-'0';
	scanf("%lld",&d);
	
}
void restimpartire()
{
	int i,t=0;
	for(i=c2[0];i>0;i--)
	{
		t=t*10+c2[i];
		rest=t%d;
	}	
}
void vector()
{
	long long a;
	int i;
	a=d;
	e[0]=0;
	for(i=1;i<=N;i++)
	{
		if(a==0)
			break;
		e[0]++;
		e[i]=a%10;
		a=a/10;
	}

}
void suma()
{
	int i,t=0;
	for(i=1;i<=c2[0] || i<=e[0] || t;i++,t=t/10)
	{
		t=t+c2[i]+e[i];
		c2[i]=t%10;
	}

}
	
int main()
{
	int i;
	freopen("next.in","r",stdin);
	freopen("next.out","w",stdout);
	obtinere();
	restimpartire();
	if(rest==0)
		for(i=c2[0];i>=1;i--)
			printf("%d",c2[i]);
	else
	{
		d=d-rest;
		vector();
		suma();
		for(i=c2[0];i>=1;i--)
			printf("%d",c2[i]);
	}
	return 0;
}