Pagini recente » Borderou de evaluare (job #3241569) | Cod sursa (job #2549264) | Cod sursa (job #1756016) | Clasament oji201811 | Cod sursa (job #210276)
Cod sursa(job #210276)
#include<stdio.h>
#include<math.h>
struct ALNR{
int c2,c3,c5;
};
void set0(ALNR &a){a.c2=a.c3=a.c5=0;}
void group(ALNR &solup,ALNR &soldn,ALNR a,ALNR b)
{
solup.c2+=a.c2;
solup.c3+=a.c3;
solup.c5+=a.c5;
soldn.c2+=b.c2;
soldn.c3+=b.c3;
soldn.c5+=b.c5;
}
int getnr(ALNR up,ALNR dow)
{int rez=0;
if(dow.c2<=up.c2)
if(dow.c3<=up.c3)
if(dow.c5<=up.c5)
{
up.c2-=dow.c2;
up.c3-=dow.c3;
up.c5-=dow.c5;
rez=pow(2,up.c2)*pow(3,up.c3)*pow(5,up.c5);
}
return rez;
}
void decomp(int nr,ALNR &a)
{
set0(a);
while(!(nr%2))
{
a.c2++;
nr/=2;
}
while(!(nr%3))
{
a.c3++;
nr/=3;
}
while(!(nr%5))
{
a.c5++;
nr/=5;
}
}
int vect[1000];
int main()
{
int n,x,y;
char c;
freopen("aliens.in","r",stdin);
freopen("aliens.out","w",stdout);
ALNR up[1000],down[1000];
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d%c%d",&x,&c,&y);
decomp(x,up[i]);
decomp(y,down[i]);
}
ALNR solup,soldn;int i,aux,solu=0;
for(i=0;i<pow(2,n);i++)
{
for(int j=n-1;j>-1;j--)
{
if(!vect[j])
{
vect[j]=1;
j++;
while(j<n)
{vect[j]=0;j++;}
break;
}
}
for(int j=0;j<n;j++)
if(vect[j])
{
group(solup,soldn,up[j],down[j]);
aux=getnr(solup,soldn);
if(aux)
if(solu<aux)
solu=aux;
}
set0(solup);
set0(soldn);
}
printf("%d",solu);
return 0;
}