Pagini recente » Cod sursa (job #11534) | Cod sursa (job #47519) | Cod sursa (job #2342719) | Cod sursa (job #1832109) | Cod sursa (job #497271)
Cod sursa(job #497271)
#include<fstream.h>
int fr[10],x[1000],a[504],b[504],c[1011];
int mai_mic_egal(int a[],int b[])
{
if(a[0]<b[0])return 1;
if(a[0]>b[0])return 0;
int i;
for(i=1;i<=a[0];i++)
{if(a[i]<b[i])return 1;
if(a[i]>b[i])return 0;
}
return 1;
}
void prod()
{
int i,j,r,k;
k=a[0]+b[0]-1;
for(i=1;i<=a[0];i++)
for(j=1;j<=b[0];j++)
c[i+j-1]+=a[i]*b[j];
r=0;
for(i=1;i<=k;i++)
{ c[i]=c[i]+r;
r=c[i]/10;
c[i]=c[i]%10;
}
while(r>0){k++;c[k]=r%10; r=r/10;}
c[0]=k;
}
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--;
}
}
int main()
{
ifstream f("prod.in");
ofstream g("prod.out");
int i,n,j;
for(i=1;i<=9;i++)f>>fr[i];
n=0;
for(i=9;i>=1;i--)
for(j=1;j<=fr[i];j++)
x[++n]=i;
a[0]=0;b[0]=0;
for(i=1;i<=n;i++)
if(mai_mic_egal(a,b))
{a[0]++;a[a[0]]=x[i];}
else{b[0]++;b[b[0]]=x[i];}
invers(a);
invers(b);
prod();
for(i=c[0];i>=1;i--)g<<c[i];
g<<'\n';
}