Cod sursa(job #995568)

Utilizator teoionescuIonescu Teodor teoionescu Data 9 septembrie 2013 15:07:23
Problema Aliens Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<fstream>
using namespace std;
ifstream in("aliens.in");
ofstream out("aliens.out");
struct frac{
	int doi,trei,cinci;
} V[55];
int A[64][64][64];
int u(int x){return x+30;}
int n,a,b,maxx;
int power(int b,int e){
	int p=1;
	for(int i=1;i<=e;i++) p*=b;
	return p;
}
int main(){
	in>>n;
	for(int i=1;i<=n;i++){
		in>>a>>b;
		while(a%2==0){V[i].doi++;a/=2;}
		while(a%3==0){V[i].trei++;a/=3;}
		while(a%5==0){V[i].cinci++;a/=5;}
		while(b%2==0){V[i].doi--;b/=2;}
		while(b%3==0){V[i].trei--;b/=3;}
		while(b%5==0){V[i].cinci--;b/=5;}
	}
	for(int i=1;i<=n;i++){
		for(int j2=-30;j2<=30;j2++){
			for(int j3=-30;j3<=30;j3++){
				for(int j5=-30;j5<=30;j5++){
					if(A[u(j2)][u(j3)][u(j5)]==1)
						A[u(j2+V[i].doi)][u(j3+V[i].trei)][u(j5+V[i].cinci)]=1;
				}
			}
		}
		A[u(V[i].doi)][u(V[i].trei)][u(V[i].cinci)]=1;
	}
	for(int j2=0;j2<=30;j2++){
		for(int j3=0;j3<=30;j3++){
			for(int j5=0;j5<=30;j5++){
				if(A[u(j2)][u(j3)][u(j5)]==1){
					int p=1;
					p*=power(2,j2);
					p*=power(3,j3);
					p*=power(5,j5);
					if(p>maxx) maxx=p;
				}
			}
		}
	}
	out<<maxx;
	return 0;
}