Cod sursa(job #507933)

Utilizator Anamaria20Cotirlea Anamaria Anamaria20 Data 7 decembrie 2010 08:42:19
Problema Prod Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 kb
#include<cstdio> 
#include<cstring>  
 
int a[2000],i,j,x,p[1000],q[1000],k,nr; 
 
void Inmultire(int A[1000], int B[1000]) 
{ 
	int i, j, t, C[1000]; 
      
	memset(C, 0, sizeof(C)); 
      
	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; 
	} 
      
	memcpy(A, C, sizeof(C)); 
} 
 
 
int main() 
{ 
    
	freopen("prod.in","r",stdin); 
	freopen("prod.out","w",stdout); 
    
	for(i=1;i<=9;++i) 
	{ 
		scanf("%d",&x); 
        
		while(x) 
		{ 
			a[++k]=i; 
			x--; 
		} 
	} 
    
	x=0; 
     
	for(i=k;i>0;--i) 
	{ 
		nr++; 
        
		if(nr%2)
			p[++p[0]]=a[i]; 
		else         
		{ 
			q[++q[0]]=a[i]; 
            
			if(p[p[0]]>q[q[0]])  
			{ 
				--i; 
                
				break; 
			} 
		} 
	} 
     
	nr=0; 
    
	for(i=i;i>0;--i) 
	{ 
		++nr; 
        
		if(nr%2)
			q[++q[0]]=a[i];         
		else
			p[++p[0]]=a[i];     
	} 
     
	for(i=1;i<=p[0]/2;++i) 
	{ 
		int aux=p[i]; 
		p[i]=p[p[0]-i+1]; 
		p[p[0]-i+1]=aux; 
	} 
     
	for(i=1;i<=q[0]/2;++i) 
	{ 
		int aux=q[i];
		
		q[i]=q[q[0]-i+1]; 
		q[q[0]-i+1]=aux;     
	} 
     
	Inmultire(p,q); 
     
	for(i=p[0];i>0;--i) 
		printf("%d",p[i]);     
	printf("\n"); 
     
	fclose(stdout); 
 
	return 0; 
}