Pagini recente » rar25 | Cod sursa (job #871686) | Cod sursa (job #701315) | 7953532771521155 | Cod sursa (job #535228)
Cod sursa(job #535228)
#include<cstdio>
#include<algorithm>
#define L 1002
using namespace std;
void citeste();
void rezolva();
void afiseaza();
int comp(int[], int[]);
void prod(int[], int[], int[]);
int f[10];
int a[L], b[L], p[L*2];
void citeste()
{
freopen("prod.in","r",stdin);
for(int i=1;i<=9;i++) scanf("%d",&f[i]);
fclose(stdout);
}
void rezolva()
{
for(int i=9;i>=1;i--)
{
while(f[i])
{
if(comp(a,b)>=0) b[0]++, b[b[0]]=i;
else a[0]++, a[a[0]]=i;
f[i]--;
}
}
reverse(a+1,a+a[0]+1);
reverse(b+1,b+b[0]+1);
prod(a,b,p);
}
int comp(int x[], int y[])
{
if(x[0]>y[0]) return 1;
else if(y[0]>x[0]) return -1;
for(int i=1;i<=x[0];i++)
{
if(x[i]>y[i]) return 1;
else if(y[i]>x[i]) return -1;
}
return 0;
}
void prod(int A[], int B[], int C[])
{
int i, j, t;
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;
}
}
void afiseaza()
{
freopen("prod.out","w",stdout);
for(int i=p[0]; i>=1;i--) printf("%d",p[i]);
fclose(stdout);
}
int main()
{
citeste();
rezolva();
afiseaza();
return 0;
}