Pagini recente » Cod sursa (job #2655402) | Cod sursa (job #2613106) | Cod sursa (job #1041953) | Cod sursa (job #2130583) | Cod sursa (job #567285)
Cod sursa(job #567285)
#include <stdio.h>
#include <string.h>
#include <math.h>
#define Dim 51
#define Dim3 1201
#define Dim5 1801
#define m3 600
#define m5 800
int D[Dim3][Dim5];
struct vector
{
int i2,i3,i5;
}pw[Dim];
inline int fmax(int a,int b)
{
if(a>b) return a;
else return b;
}
int main()
{
int i,j,N,x,y,ind;
unsigned long long w;
double log2,log3,log5,E,sol;
freopen("aliens.in","r",stdin);
scanf("%d",&N);
for(i=1;i<=N;i++)
{
scanf("%d",&x);
while(x%2==0)
{
pw[i].i2++;
x/=2;
}
while(x%3==0)
{
pw[i].i3++;
x/=2;
}
while(x%5==0)
{
pw[i].i5++;
x/=2;
}
scanf("%d",&x);
while(x%2==0)
{
pw[i].i2--;
x/=2;
}
while(x%3==0)
{
pw[i].i3--;
x/=2;
}
while(x%5==0)
{
pw[i].i5--;
x/=2;
}
}
D[pw[1].i3+m3][pw[1].i5+m5]=pw[1].i2;
for(ind=2;ind<=N;ind++)
{
for(i=Dim3-1;i>=0;i--)
for(j=Dim5-1;j>=0;j--)
D[i][j]=fmax(D[i][j],D[i-pw[ind].i3][j-pw[ind].i5]+pw[ind].i2);
D[pw[ind].i3+m3][pw[ind].i5+m5]=pw[ind].i2;
}
sol=-1;
log2=log(2.0);
log3=log(3.0);
log5=log(5.0);
for(i=0;i<Dim3;i++)
for(j=0;j<Dim5;j++)
if(D[i][j]!=INF)
{
E=D[i][j]*log2+i*log3+j*log5;
if(E>sol)
{
sol=E;
x=i;
y=j;
}
}
freopen("aliens.out","w",stdout);
w=1;
for(i=1;i<=D[x][y];i++) w*=2;
for(i=1;i<=x-m3;i++) w*=3;
for(i=1;i<=y-m5;i++) w*=5;
printf("%lld\n",w);
return 0;
}