Cod sursa(job #477053)

Utilizator jeanFMI - Petcu Ion Cristian jean Data 13 august 2010 11:23:55
Problema Prod Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>
#define Nmax 1010

int M[2][Nmax], a[Nmax], b[Nmax], i, j, c[Nmax<<1], t, v[10];

int main()
{
	freopen("prod.in","r",stdin);
	freopen("prod.out","w",stdout);
	
	for(i=1;i<=9;i++)
		scanf("%d",&v[i]);
	
	for( i = 9 ; i ; i-- )
	{
		for( j = 1 ; j <= v[i] ; j++, t^=1 )
			M[t][++M[t][0]] = i;
		
		if( M[0][0] > M[1][0] )
		{
			for( i=i-1 ; !v[i]&&i ; i-- ) ;
			if( !i ) break;
			M[1][++M[1][0]] = i;
			v[i]--;
			i++;
		}
	}
	
	a[0] = M[0][0];
	
	for( i = a[0] ; i ; i-- )
		a[ a[0]-i+1 ] = M[0][i];


	b[0] = M[1][0];
	
	for( i = b[0] ; i ; i-- )
		b[ b[0]-i+1 ] = M[1][i];	
	
	for( i=1 ; i <= a[0]; i++ )
	{
		for( t=0,j=1; j <= b[0] || t ; j++,t/=10 )
			c[i+j-1] = ( t+=c[i+j-1] + a[i]*b[j] ) %10 ; 
		
		if( i+j-2 > c[0] ) c[0] = i+j-2;
	}

	for( i = c[0] ; i ; i-- )
		printf("%d",c[i]);
	
	return 0;
}