Pagini recente » :) | Istoria paginii utilizator/pavelandrei | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #486541)
Cod sursa(job #486541)
#include<fstream.h>
#define NMAX 1002
int fr[10], a[NMAX], b[NMAX], c[NMAX], i, nc, j, na, nb, T;
void invers1()
{
int p=1, u=na,aux;
while (p<u)
{
aux=a[p];
a[p]=a[u];
a[u]=aux;
++p;--u;
}
}
void invers2()
{
int p=1, u=nb, aux;
while (p<u)
{
aux=b[p];
b[p]=b[u];
b[u]=aux;
++p;--u;
}
}
int main()
{
ifstream f("prod.in");
ofstream g("prod.out");
for(i=1; i<10; ++i) f>>fr[i];
for(i=9; i>0; --i)
for(j=1; j<=fr[i]; ++j) c[++nc]=i;
a[1]=c[1];na=1;
b[1]=c[2];b[2]=c[3];nb=2;
c[1]=0;c[2]=0;c[3]=0;
for(i=4; i<=nc; ++i)
{
if (i%2==0) a[++na]=c[i];
else b[++nb]=c[i];
c[i]=0;
}
invers1();
invers2();
a[0]=na;b[0]=nb;
c[0]=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];
for (i=1;i<=c[0];i++)
{
T=(c[i]+=T)/10;
c[i]%=10;
}
if (T) c[++c[0]]=T;
for(i=c[0]; i>0; --i) g<<c[i];
g<<"\n";
f.close();
g.close();
return 0;
}