Pagini recente » Istoria paginii utilizator/sanzianaionete | Cod sursa (job #734549) | Rezervatie Naturala | Clasament .com 2009 | Cod sursa (job #466940)
Cod sursa(job #466940)
#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;
}