Pagini recente » Cod sursa (job #2868709) | Cod sursa (job #2682315) | Cod sursa (job #2564574) | Cod sursa (job #75397) | Cod sursa (job #2025727)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream si("prod.in");
ofstream so("prod.out");
int fr[10],a[1005],b[1005],p[1005];
bool comp(int x[],int y[])
{
if(x[0]!=y[0])
return x[0]>y[0];
for(int i=1;i<=x[0];i++)
if(x[i]!=y[i])
return x[i]>y[i];
return 1;
}
void prod(int a[],int b[],int c[])
{
int t=0;
c[0]=a[0]+b[0]-1;
for(int i=1;i<=a[0]+b[0];i++)
c[i]=0;
for(int i=1;i<=a[0];i++)
for(int j=1;j<=b[0];j++)
c[i+j-1]+=a[i]*b[j];
for(int i=1;i<=c[0];i++)
{
c[i]+=t;
t=c[i]/10;
c[i]%=10;
}
if(t)
c[++c[0]]=t;
}
int main()
{
for(int i=1;i<=9;i++)
si>>fr[i];
for(int i=9;i;i--)
while(fr[i])
{
if(comp(a,b))
b[++b[0]]=i;
else
a[++a[0]]=i;
fr[i]--;
}
reverse(a+1,a+a[0]+1);
reverse(b+1,b+b[0]+1);
prod(a,b,p);
for(int i=p[0];i>0;--i)
so<<p[i];
return 0;
}