Pagini recente » Cod sursa (job #2886934) | Cod sursa (job #412567) | Cod sursa (job #2982318) | Cod sursa (job #1857932) | Cod sursa (job #498812)
Cod sursa(job #498812)
#include<fstream.h>
ifstream fin("prod.in");
ofstream fout("prod.out");
int j,x[1000],v[10],i,n,a[1000],b[1000],k,c[1000],t;
int compara(int a[], int b[])
{
if(a[0]<b[0])
return 1;
else
if(a[0]>b[0])
return 0;
for(j=1;j<=a[0];j++)
if(a[j]>b[j])
return 0;
if(a[j]<b[j])
return 1;
return 1;
}
void invers(int a[])
{
int u,v,aux;
u=1;v=a[0];
while(u<=v)
{
aux=a[u];
a[u]=a[v];
a[v]=aux;
u++;
v--;
}
}
void prod(int a[], int b[], int c[])
{
for(i=1;i<=a[0];i++)
for(j=1;j<=b[0];j++)
c[i+j-1]=c[i+j-1]+a[i]*b[j];
t=0;
k=a[0]+b[0]+1;
for(i=1;i<=k;i++)
{
c[i]=c[i]+t;
t=c[i]/10;
c[i]=c[i]%10;
}
while(t>0)
{
k++;
c[k]=t%10;
t=t/10;
}
c[0]=k;
}
int main()
{
for(i=1;i<=9;i++)
fin>>v[i];
n=0;
for(i=9;i>0;i--)
{
j=1;
while(j<=v[i])
{
x[n++]=i;
j++;
}
}
for(i=0;i<n;i++)
{
if(compara(a,b)==1)//if a<=b returneza 1;
{
a[0]++;
a[a[0]]=x[i];
}
else
{
b[0]++;
b[b[0]]=x[i];
}
}
invers(a);
invers(b);
prod(a,b,c);
for(i=c[0]-1;i>0;i--)
fout<<c[i];
fin.close();
fout.close();
return 0;
}