Pagini recente » Cod sursa (job #3173886) | Cod sursa (job #1904512) | Cod sursa (job #229566) | Cod sursa (job #1364893) | Cod sursa (job #2025815)
#include <cstdio>
using namespace std;
int f[10];
int nr1[1001];
int nr2[1001];
int v[2][1001],s;
void mutadr (int v[]){
int i;
for (i=v[0]-1;i>0;i--)
v[i+1]=v[i];
}
void mutast (int v[]){
int i;
for (i=2;i<=v[0];i++)
v[i-1]=v[i];
}
void prod (int k){
int i,t=0,j;
v[k][0]=nr1[0]+nr2[0]-1;
for (i=1;i<=nr1[0]+nr2[0];i++)
v[k][i]=0;
for (i=1;i<=nr1[0];i++)
for (j=1;j<=nr2[0];j++)
v[k][i+j-1]+=nr1[i]*nr2[j];
for (i=1;i<=v[k][0];i++){
v[k][i]+=t;
t=v[k][i]/10;
v[k][i]%=10;
}
if (t)
v[k][++v[k][0]]=t;
}
void compar (){
int st=-1,cf1,cf2,i;
if (v[0][0]>v[1][0])
st=0;
else if (v[0][0]<v[1][0])
st=1;
else for (i=v[0][0];i>0;i--){
if (v[0][i]>v[1][i])
st=0;
else if (v[0][i]<v[1][i])
st=1;
if (st!=-1)
break;
}
if (st==0){
if (s>1){
cf1=nr2[1];
cf2=nr1[1];
mutast (nr1);
mutadr (nr1);
nr1[1]=cf1;
mutast (nr2);
mutadr (nr2);
nr2[1]=cf2;
}
else {
cf1=nr2[1];
mutadr (nr1);
nr1[1]=cf1;
mutast(nr2);
nr2[0]--;
nr1[0]++;
}
}
}
int main()
{
FILE *fin=fopen ("prod.in","r");
FILE *fout=fopen ("prod.out","w");
int i,cf1,cf2;
s=0;
for (i=1;i<=9;i++){
fscanf (fin,"%d",&f[i]);
s+=f[i];
}
i=9;
while (s>=2){
nr1[0]++;
nr2[0]++;
while (f[i]==0)
i--;
cf1=i;
f[i]--;
while (f[i]==0)
i--;
cf2=i;
f[i]--;
mutadr (nr1);
mutadr (nr2);
nr1[1]=cf1;
nr2[1]=cf2;
prod (0);
nr1[1]=cf2;
nr2[1]=cf1;
prod (1);
compar ();
s-=2;
}
if (s){
while (f[i]==0)
i--;
cf1=i;
nr1[0]++;
mutadr(nr1);
nr1[1]=cf1;
prod (0);
mutast(nr1);
nr1[0]--;
nr2[0]++;
mutadr (nr2);
nr2[1]=cf1;
prod (1);
compar ();
}
prod (0);
for (i=v[0][0];i>0;i--)
fprintf (fout,"%d",v[0][i]);
return 0;
}