Cod sursa(job #415023)

Utilizator gcosminGheorghe Cosmin gcosmin Data 10 martie 2010 20:41:50
Problema Prod Scor Ascuns
Compilator cpp Status done
Runda Marime 0.97 kb
#include <stdio.h>
#include <string.h>

#define NMAX 1000010

int nr[20];

int a[2][NMAX], n[2];

int C[NMAX];

void mul(int A[], int B[])
{
	      int i, j, t;
	            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()
{
	int i, s = 0;

	freopen("prod.in", "r", stdin);
	freopen("prod.out", "w", stdout);

	for (i = 1; i <= 9; i++) {
		scanf("%d", &nr[i]);
		
		s += nr[i];
	}

	a[0][0] = (s + 1) / 2; n[0] = a[0][0];
	a[1][0] = s / 2; n[1] = a[1][0];

	int k = 0;

	for (i = 9; i >= 1; i--) {
		while (nr[i]) {
			a[k][ n[k]-- ] = i;
			nr[i]--;

			k++; if (k == 2) k = 0;
		}
	}

	mul(a[0], a[1]);

	for (i = C[0]; i >= 1; i--) printf("%d", C[i]);
	printf("\n");

	return 0;
}