Pagini recente » Cod sursa (job #1402114) | Istoria paginii runda/oni_2007_zi1 | Clasament summer | Cod sursa (job #2491053) | Cod sursa (job #210295)
Cod sursa(job #210295)
#include<stdio.h>
#include<math.h>
struct ALNR{
int c2,c3,c5;
};
void set0(ALNR &a){a.c2=a.c3=a.c5=0;}
int 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 rez=0;
if(soldn.c2<=solup.c2)
if(soldn.c3<=solup.c3)
if(soldn.c5<=solup.c5)
{
solup.c2-=soldn.c2;
solup.c3-=soldn.c3;
solup.c5-=soldn.c5;
rez=pow(2,solup.c2)*pow(3,solup.c3)*pow(5,solup.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%30))
{
a.c2++;
a.c3++;
a.c5++;
nr/=30;
}
while(!(nr%10))
{
a.c2++;
a.c5++;
nr/=10;
}
while(!(nr%6))
{
a.c2++;
a.c3++;
nr/=6;
}
while(!(nr%15))
{
a.c5++;
a.c3++;
nr/=15;
}
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);
if(x>1)
decomp(x,up[i]);
else
set0(up[i]);
if(y>1)
decomp(y,down[i]);
else
set0(down[i]);
}
ALNR solup,soldn;int aux,solu=0;
for(long i=0;i<((2<<n)-1);i++)
{
for(int j=0;j<n;j++)
{
if(i&(1u<<j))
{
aux=group(solup,soldn,up[n-1-j],down[n-1-j]);
//aux=getnr(solup,soldn);
if(aux)
if(solu<aux)
solu=aux;
}
}
set0(solup);
set0(soldn);
}
printf("%d",solu);
return 0;
}