Pagini recente » Cod sursa (job #17627) | Cod sursa (job #2756633) | Cod sursa (job #2333546) | Cod sursa (job #1941040) | Cod sursa (job #477053)
Cod sursa(job #477053)
#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;
}