Cod sursa(job #42739)

Utilizator ionescu_bogdanIonescu Bogdan-Gabriel ionescu_bogdan Data 29 martie 2007 14:38:24
Problema Next Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define cmax 1000050

int n[cmax],cat[cmax],i;
long long d;
char s[cmax];

void divide()
{
	long long x=0;
	for (i=n[0];i>0;i--)
	{
		x=x*10+n[i];
		cat[i]=x/d;
		x%=d;
	}
	if (x)
		cat[1]++;
	cat[0]=n[0];
	for (i=1;i<cat[0];i++)
		cat[i+1]+=cat[i]/10,cat[i]%=10;
	while ((cat[cat[0]]==0)&&(cat[0]>1))
		--cat[0];
}

void mul()
{
	long long x=0;
	for (i=1;i<=cat[0];i++)
	{
		x+=cat[i]*d;
		n[i]=x%10,x/=10;
	}
	while (x)
		n[i]=x%10,x/=10,++i;
	n[0]=i-1;
}

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

	scanf("%s%lld",s,&d);
	n[0]=strlen(s);
	for (i=0;i<n[0];i++)
		n[i+1]=s[n[0]-i-1]-'0';
	divide();
	memset(n,0,sizeof(n));
	mul();
	for (i=1;i<=n[0];i++)
		printf("%d",n[i]);
	printf("\n");

	return 0;
}