Pagini recente » Cod sursa (job #1667543) | Cod sursa (job #2017211) | Cod sursa (job #1533045) | Cod sursa (job #2015752) | Cod sursa (job #486565)
Cod sursa(job #486565)
#include<fstream.h>
#define NMAX 1002
int fr[10], a[NMAX], b[NMAX], c[NMAX+NMAX], i, nc, j, na, nb, T;
void invers1()
{
int p=1, u=a[0], aux;
while (p<u)
{
aux=a[p];
a[p]=a[u];
a[u]=aux;
++p;--u;
}
}
void invers2()
{
int p=1, u=b[0], aux;
while (p<u)
{
aux=b[p];
b[p]=b[u];
b[u]=aux;
++p;--u;
}
}
void inmultire0()
{
int i, j, T=0;
invers1();
invers2();
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()
{
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];a[0]=1;
b[1]=c[2];b[2]=c[3];b[0]=2;
c[1]=0;c[2]=0;c[3]=0;
for (i=4; i<=nc; ++i)
if (i%2==0) a[++a[0]]=c[i];
else b[++b[0]]=c[i];
inmultire0();
for(i=c[0]; i>0; --i) g<<c[i];
f.close();
g.close();
return 0;
}