Pagini recente » Cod sursa (job #2625792) | Cod sursa (job #2279221) | Cod sursa (job #1303835) | Cod sursa (job #779861) | Cod sursa (job #466637)
Cod sursa(job #466637)
#include<algorithm>
using namespace std;
int a[15],b[5][1005];
inline bool comp ()
{
if(b[1][0]>b[2][0])
return 0;
else if (b[1][0]<b[2][0])
return 1;
for(int i=1;i<=b[1][0];++i)
if(b[1][i]>b[2][i])
return 0;
else if (b[1][i]<b[2][i])
return 1;
return 0;
}
void mul(int A[], int B[])
{
int i, j, t, C[1005];
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);
int i,j;
for(i=1;i<=9;++i)
scanf("%d",&a[i]);
for(i=9;i>0;--i)
{
if(b[1][0]==0 && a[i]>0)
{
b[1][1]=i;
++b[1][0];
--a[i];
}
if(b[2][0]==0 && a[i]>0)
{
b[2][1]=i;
++b[2][0];
--a[i];break;
}
}
for(i=9;i>0;--i)
for(j=a[i];j>0;--j)
if(comp())
b[1][++b[1][0]]=i;
else
b[2][++b[2][0]]=i;
int aux;
for(i=1;i<b[1][0]/2;++i)
{
aux=b[1][i];
b[1][i]=b[1][b[1][0]-i+1];
b[1][b[1][0]-i+1]=aux;
}
for(i=1;i<b[2][0]/2;++i)
{
aux=b[2][i];
b[2][i]=b[2][b[2][0]-i+1];
b[2][b[2][0]-i+1]=aux;
}
mul(b[1],b[2]);
for(i=b[1][0];i>0;--i)
printf("%d",b[1][i]);
return 0;
}