Pagini recente » Cod sursa (job #324531) | Cod sursa (job #70339) | Cod sursa (job #145709) | Cod sursa (job #312279) | Cod sursa (job #829390)
Cod sursa(job #829390)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("prod.in");
ofstream g("prod.out");
int i,n,k,m,nr,a[20],x[4][1101],y[1101],z[1101];
void inmultire2(int a[],int b[],int c[])
{int i,t=0,j,n=a[0]-1+b[0];
for(i=1;i<=a[0];++i)
for(j=1;j<=b[0];++j)
c[i+j-1]+=a[i]*b[j];
for(i=1;i<=n||t;++i)
{c[i]+=t;
t=c[i]/10;
c[i]%=10;
}
c[0]=i-1;
}
void afiseaza(int x[])
{int i=x[0];
for(;i;--i)
g<<x[i];
}
int cmp()
{
if(x[1][0]<x[2][0])
return 1;
if(x[2][0]<x[1][0])
return 2;
for(int i=1; i<=x[1][0];++i)
{
if(x[1][i]<x[2][i])
return 1;
if(x[2][i]<x[1][i])
return 2;
}
return 1;
}
int main()
{
for(i=1;i<=9;++i)
f>>a[i],nr+=a[i];
x[1][0]=0;
x[2][0]=0;
i=9;
while(nr)
{
--nr;
while(a[i]==0&&i)
--i;
--a[i];
k=cmp();
x[k][0]++;
x[k][x[k][0]]=i;
}
reverse(x[1]+1,x[1]+x[1][0]+1);
reverse(x[2]+1,x[2]+x[2][0]+1);
inmultire2(x[1],x[2],y);
afiseaza(y);
return 0;
}