Pagini recente » Cod sursa (job #3131552) | Cod sursa (job #1555872) | Cod sursa (job #2828232) | Cod sursa (job #805680) | Cod sursa (job #109435)
Cod sursa(job #109435)
#include<stdio.h>
#include<math.h>
struct str{
int a;
int b;
int c;
}u[51][2];
short int i;
int max=-1;
void backtr(short int k, short int n, str p)
{
int i;
double s=(double)pow(2.0,p.a) * (double)pow(3.0,p.b) * (double)pow(5.0,p.c);
if(s==(int)s)
{
if(max<(int)s) max=(int)s;
}
if(k<=n){
for(i=k;i<=n;i++)
{
p.a+=u[i][0].a;
p.b+=u[i][0].b;
p.c+=u[i][0].c;
backtr(i+1,n,p);
p.a-=u[i][0].a;
p.b-=u[i][0].b;
p.c-=u[i][0].c;
}
}
}
int main()
{
short int n;
int x,y;
FILE *fin,*fout;
fin=freopen("aliens.in","r",stdin);
fout=freopen("aliens.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&x); scanf("%d",&y);
while(x%2==0) {x/=2; u[i][0].a++;}
while(x%3==0) {x/=3; u[i][0].b++;}
while(x%5==0) {x/=5; u[i][0].c++;}
while(y%2==0) {y/=2; u[i][1].a++;}
while(y%3==0) {y/=3; u[i][1].b++;}
while(y%5==0) {y/=5; u[i][1].c++;}
u[i][0].a-=u[i][1].a;
u[i][0].b-=u[i][1].b;
u[i][0].c-=u[i][1].c;
}
str p;p.a=0; p.b=0;
p.c=0;
backtr(1,n,p);
printf("%d",max);
fclose(fin);
fclose(fout);
return 0;
}