Pagini recente » Cod sursa (job #1526243) | Cod sursa (job #1212279) | Cod sursa (job #2378273) | Cod sursa (job #403699) | Cod sursa (job #466676)
Cod sursa(job #466676)
#include<stdio.h>
#include<algorithm>
using namespace std;
int b[10007],a[10007],aux[30007],sol[10007];
int f[45];
void inmul(int val)
{
int t=0,i;
for(i=1;i<=b[0] || t;i++)
{
aux[i]=b[i]*val+t;
t=aux[i]/10;
aux[i]%=10;
}
aux[0]=i-1;
}
void add()
{
int i,t=0;
for(i=1;i<=aux[0] || t;i++)
{
if(i>aux[0])
aux[i]=0;
sol[i]+=aux[i]+t;
if(sol[i]>9)
{
sol[i]-=10;
t=1;
}
else
t=0;
}
if(i-1>sol[0])
sol[0]=i-1;
}
int main ()
{
int i,j;
freopen("prod.in","r",stdin);
freopen("prod.out","w",stdout);
for(i=1;i<=9;i++)
scanf("%d",&f[i]);
int poz=1;
for(i=9;i>=1;i--)
while(f[i])
{
if(a[0]>b[0])
b[++b[0]]=i;
else
if(a[0]<b[0])
a[++a[0]]=i;
else
{
if(a[poz]<=b[poz])
a[++a[0]]=i;
else
b[++b[0]]=i;
}
f[i]--;
while(poz<a[0] && poz<b[0] && a[poz]==b[poz])
poz++;
}
sort(a+1,a+a[0]+1);
sort(b+1,b+b[0]+1);
for(i=1;i<=a[0];i++)
{
inmul(a[i]);
// mut cu a[0]-i
for(j=aux[0];j>=1;j--)
aux[j+i-1]=aux[j];
for(j=i-1;j>=1;j--)
aux[j]=0;
aux[0]+=i-1;
add();
}
for(i=sol[0];i>=1;i--)
printf("%d",sol[i]);
printf("\n");
return 0;
}