Cod sursa(job #272742)

Utilizator ooctavTuchila Octavian ooctav Data 7 martie 2009 18:56:58
Problema Next Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <stdio.h>
#include <string.h>

const int N=1000000;
char c[N];
int  c2[N];
long long d,rest=0;

void obtinere()
{
	int  i,nr=1;
	fgets(c,N-1,stdin);
	puts(c);
	c2[0]=strlen(c)-1;
	for(i=c2[0];i>=0;i--)
		c2[nr++]=c[i]-'0';
	for(i=1;i<=c2[0];i++)
		c[i]=c2[i];
	c[0]=c2[0];	
	scanf("%lld",&d);
	
}
void restimpartire()
{
	int i,t=0;
	for(i=c2[0];i>0;i--)
		rest=(t*10+c2[i])%d;
	
}
void vector()
{
	long long a,nr=1;
	a=rest;
	c2[0]=0;
	while(a)
	{
		c2[nr++]=a%10;
		c2[0]++;
		a=a/10;
	}
	
}
void suma()
{
	int i,t=0;
	for(i=1;i<=c[0] || i<=c2[0] || t;i++,t=t/10)
		c[i]=(t=t+c[i]+c2[i])%10;
	c[0]--;	
}
	
int main()
{
	freopen("next_.in","r",stdin);
	freopen("next.out","w",stdout);
	long i;
	obtinere();
	restimpartire();
	if(rest==0)
		for(i=1;i<=c[0];i++)
			printf("%c",c[i]);
	else
	{
		d=d-rest;
		vector();
		suma();
		for(i=1;i<=c[0];i++)
			printf("%c",c[i]);
	}
	return 0;
}