Pagini recente » Istoria paginii utilizator/mia_lungoci | Istoria paginii runda/simulare-oji-xutzu | Cod sursa (job #998712) | Cod sursa (job #1749218) | Cod sursa (job #830037)
Cod sursa(job #830037)
#include<fstream>
using namespace std;
ifstream f("prod.in");
ofstream g("prod.out");
int k,nr,i,n,s[1001],v[11],a[505],b[505],c[1020];
void inmultire(int a[],int b[],int c[])
{int i,t=0,j,n=a[0]-1+b[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<=n||t;++i)
{
c[i]+=t;
t=c[i]/10;
c[i]%=10;
}
c[0]=i-1;
}
int main()
{
n=0;
for(i=1;i<=9;++i)
f>>v[i];
for(i=9;i>=1;++i)
if(v[i]%2!=0)
{
nr=i;
break;
}
for(i=1;i<=9;++i)
while(v[i]!=0)
{
++n; --v[i];
s[n]=i;
}
k=0; i=n;
while(s[i]>=nr&&i>0)
{
if(k==0)
{
++a[0];
a[a[0]]=s[i];
k=1; --i;
}
else
{
++b[0]; b[b[0]]=s[i];
k=0; --i;
}
}
if(i>0)
{
k=1; ++b[0]; b[b[0]]=s[i]; --i;
}
while(i>0)
{
if(k==0)
{
++a[0];
a[a[0]]=s[i];
k=1; --i;
}
else
{
++b[0]; b[b[0]]=s[i];
k=0; --i;
}
}
k=a[0]/2;
for(i=1;i<=k;++i)
{
n=a[i];
a[i]=a[a[0]-i+1];
a[a[0]-i+1]=n;
}
k=b[0]/2;
for(i=1;i<=k;++i)
{
n=b[i];
b[i]=b[b[0]-i+1];
b[b[0]-i+1]=n;
}
inmultire(a,b,c);
for(i=c[0];i>=1;--i)
g<<c[i];
return 0;
}