Pagini recente » Cod sursa (job #399286) | Cod sursa (job #2176778) | Cod sursa (job #3001015) | Cod sursa (job #2162475) | Cod sursa (job #498796)
Cod sursa(job #498796)
#include<stdio.h>
int n,a[1005],b[1005],p[1005],i,j,ii,f[10],v[1005];
int comparare(int a[100],int b[100])
{
if(a[0]<b[0])return 1;
if(a[0]>b[0])return 0;
for(ii=1;ii<=a[0];ii++)
{
if(a[ii]>b[ii])return 0;
if(b[ii]>a[ii])return 1;
}
return 1;
}
void prod(int a[100],int b[100])
{
int i,j,t,cif;
for(i=1;i<=b[0];i++)
{
for(t=0,j=1;j<=a[0];j++)
{
cif=p[i+j]+a[j]*b[i]+t;
p[i+j]=cif%10;
t=cif/10;
}
if(t)p[i+j]=t;
}
p[0]=a[0]+b[0];
if(p[0])p[0]++;
}
void inversare(int a[100])
{
int aux;
for(i=1;i<=a[0]/2;i++)
{
aux=a[i];
a[i]=a[a[0]-i+1];
a[a[0]-i+1]=aux;
}
}
void write()
{
freopen("prod.out","w",stdout);
for(i=p[0];i>=2;i--)
printf("%d",p[i]);
}
int main()
{
freopen("prod.in","r",stdin);
for(i=1;i<=9;i++)
scanf("%d",&f[i]);
for(i=9;i>=1;i--)
for(j=1;j<=f[i];j++)
v[n++]=i;
a[0]=0;
b[0]=0;
for(i=0;i<n;i++)
if(comparare(a,b)==1)
{
a[0]++;
a[a[0]]=v[i];
}
else b[0]++,b[b[0]]=v[i];
inversare(a);
inversare(b);
prod(a,b);
write();
}