Pagini recente » Cod sursa (job #2753541) | Cod sursa (job #148077) | Cod sursa (job #62442) | Cod sursa (job #207323) | Cod sursa (job #507933)
Cod sursa(job #507933)
#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;
}