Pagini recente » Cod sursa (job #889084) | Cod sursa (job #2816764) | Cod sursa (job #618814) | Cod sursa (job #2880949) | Cod sursa (job #466941)
Cod sursa(job #466941)
#include<cstdio>
typedef int Huge[5001];
Huge C,AP,BP;
int f[11];
void prod(Huge Rez,Huge X,Huge Y)
{
for(int i=1;i<=X[0];i++)
for(int j=1;j<=Y[0];j++)
Rez[i+j-1]+=X[i]*Y[j];
Rez[0]=X[0]+Y[0]-1;
int poz=0;
int T=0;
while(++poz<=Rez[0])
{
Rez[poz]+=T;
T=Rez[poz]/10;
Rez[poz]%=10;
}
while(T)
Rez[++Rez[0]]=T%10, T/=10;
}
void afis(Huge A)
{
for(int i=A[0];i>0;i--)
printf("%d",A[i]);
printf("\n");
}
void rastorn(Huge A)
{
int st=0;
int dr=A[0]+1;
int aux;
while(++st<=--dr)
{
aux=A[st];
A[st]=A[dr];
A[dr]=aux;
}
}
void make()
{
int m=0;
for(int i=9;i>0;i--)
{
while(AP[0]<BP[0] && f[i])
AP[++AP[0]]=i, f[i]--;
while(BP[0]<AP[0] && f[i])
BP[++BP[0]]=i, f[i]--;
for(int j=1;j<=f[i]/2;j++)
AP[++AP[0]]=BP[++BP[0]]=i;
if(f[i]%2==1)
{
if(m=='a')
BP[++BP[0]]=i;
else if(m=='b')
AP[++AP[0]]=i;
else
AP[++AP[0]]=i, m='a';
}
}
rastorn(AP);
rastorn(BP);
prod(C,AP,BP);
afis(C);
}
int main()
{
freopen("prod.in","r",stdin);
freopen("prod.out","w",stdout);
for(int i=1;i<10;i++)
scanf("%d",&f[i]);
make();
return 0;
}