Pagini recente » Cod sursa (job #439483) | Cod sursa (job #3255650) | Cod sursa (job #439593) | Cod sursa (job #1421978) | Cod sursa (job #2515873)
#include <fstream>
#include <vector>
using namespace std;
ifstream in("aliens.in");
ofstream out("aliens.out");
const int lim=52;
struct fractie
{
int c2,c3,c5;
}v[lim];
long long int pow2(int exp)
{
long long int prod=1;
for(int i=1;i<=exp;++i)
prod*=2;
return prod;
}
long long int p2[53];
long long int p3[43];
long long int p5[23];
vector<int> f;
int main()
{
p2[0]=1;
p3[0]=1;
p5[0]=1;
for(int i=1;i<=51;++i)
p2[i]=2*p2[i-1];
for(int i=1;i<=39;++i)
p3[i]=3*p3[i-1];
for(int i=1;i<=21;++i)
p5[i]=5*p5[i-1];
long long int maxx=-1;
int n;
in>>n;
for(int i=1;i<=n;++i)
{
int a,b;
in>>a>>b;
while(a%2==0)
v[i].c2++,a/=2;
while(a%3==0)
v[i].c3++,a/=3;
while(a%5==0)
v[i].c5++,a/=5;
while(b%2==0)
v[i].c2--,b/=2;
while(b%3==0)
v[i].c3--,b/=3;
while(b%5==0)
v[i].c5--,b/=5;
}
for(long long int j=1;j<=p2[n+1]-1;++j)
{
long long int kk=j;
for(int i=1;i<=n;++i)
{
if(kk%2==1)
f.push_back(i);
kk/=2;
}
int s2=0,s3=0,s5=0;
for(int i=0;i<f.size();++i)
{
s2+=v[f[i]].c2;
s3+=v[f[i]].c3;
s5+=v[f[i]].c5;
}
if(s2>=0 and s3>=0 and s5>=0)
{
long long int numar=1;
if(s2>51)
{
numar*=p2[51];
for(int i=52;i<=s2;++i)
numar*=2;
}
else numar*=p2[s2];
if(s3>41)
{
numar*=p3[41];
for(int i=42;i<=s3;++i)
numar*=3;
}
else numar*=p3[s3];
if(s5>21)
{
numar*=p5[21];
for(int i=22;i<=s5;++i)
numar*=5;
}
else numar*=p5[s5];
if(numar>maxx)
maxx=numar;
}
f.clear();
}
out<<maxx;
return 0;
}