Cod sursa(job #760078)

Utilizator paunmatei7FMI Paun Matei paunmatei7 Data 20 iunie 2012 08:29:53
Problema Next Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include<stdio.h>
#include<string.h>
void prod(int H[],long long X)
{ 
	int i;
	unsigned long T=0;
	for (i=1;i<=H[0];i++)
    {
		H[i]=H[i]*X+T;
		T=H[i]/10;
		H[i]=H[i]%10;
    }
	while (T)
	{	
		H[++H[0]]=T%10;
		T/=10;
    }
}
void div(int A[],long long  X)
{
	int i;
	long long R=0;
	for (i=A[0];i;i--)
    {
		A[i]=(R=10*R+A[i])/X;
		R%=X;
    }
	while (!A[A[0]] && A[0]>1)
		A[0]--;
}
void adun(int A[],int B[])
{ 
	int i,T=0;
	if (B[0]>A[0])
    { 
		for (i=A[0]+1;i<=B[0];)
			A[i++]=0;
		A[0]=B[0];
    }
    else
		for (i=B[0]+1;i<=A[0];) 
			B[i++]=0;
	for (i=1;i<=A[0];i++)
    {
		A[i]+=B[i]+T;
		T=A[i]/10;
		A[i]%=10;
    }
	if (T)
		A[++A[0]]=T;
}
int a[1000000],b[5];
char c[1000000];
int main()
{
	long long d;
	long i;
	freopen("next.in","r",stdin);
	freopen("next.out","w",stdout);
	gets(c);
	a[0]=strlen(c);
	d=-1;
	for (i=a[0];i>=1;i--)
		a[i]=c[++d]-48;
	scanf("%lld",&d);
	div(a,d);
	b[0]=b[1]=1;
	adun(a,b);
	prod(a,d);
	for (i=a[0];i>=1;i--)
		printf("%d",a[i]);
}