Pagini recente » Cod sursa (job #1906858) | Cod sursa (job #2748137) | Cod sursa (job #2874569) | Cod sursa (job #851971) | Cod sursa (job #498808)
Cod sursa(job #498808)
#include<fstream.h>
ifstream fin("prod.in");
ofstream fout("prod.out");
int bla[10],bla2[1001],n,a[1000],b[1000],c[1000];
int compara()//int a[], int b[])
{
if(a[0]>b[0]) return 1;
if(a[0]<b[0]) return 0;
for(int i=1;i<=a[0];i++)
{
if(a[i]>b[i]) return 1;
if(a[i]<b[i]) return 0;
}
return 1;
}
void invers(int x[])
{
int u=1,v=x[0],aux;
while(u<v)
aux=x[u],x[u++]=x[v],x[v--]=aux;
}
void prod(int a[], int b[], int c[])
{
int i,j,t=0;
c[0]=a[0]+b[0]-1;
for (i=1;i<=a[0]+b[0];) c[i++]=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<=c[0];i++)
{
t=(c[i]+=t)/10;
c[i]%=10;
}
if (t) c[++c[0]]=t;
}
int main()
{
for(int i=1;i<=9;i++)
fin>>bla[i];
n=0;
for(int i=9;i>=0;i--)
for(int j=0;j<bla[i];j++)
bla2[n++]=i;
for(int i=0;i<n;i++)
if(compara())//(a,b))
b[++b[0]]=bla2[i];
else
a[++a[0]]=bla2[i];
invers(a);
invers(b);
prod(a,b,c);
invers(c);
for(int i=1;i<=c[0];i++)
fout<<c[i];
fin.close();
fout.close();
return 0;
}