链接:http://poj.org/problem?id=3101
题意:给出每颗行星的运行周期,问多久运行到一条直线上
角速度为v = 2*π/T
以第一颗行星为参照点
则其他行星的相对速度为V' = (Ti- T0)*2π/(Ti*T0)
半个周期即可在同一条直线上
绕过半个圆周的时间为t = π/V' = (T0*Ti)/((T0 - Ti)*2)
n-1个分数的GCD就是答案
gcd(x/y,a/b)=lcm(x,a)/gcd(y,b);
//package zzz;
import java.util.Arrays;
import java.util.Scanner;
import java.lang.reflect.Array;
import java.math.*;
import java.text.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner cin=new Scanner(System.in);
int []a=new int[1010];
int []b=new int[1010];
int n;
while(cin.hasNext())
{
n=cin.nextInt();
for(int i=0; i<n; ++i)
a[i]=cin.nextInt();
Arrays.sort(a,0,n);
int p=0;
for(int i=0; i<n; ++i)
{
if(i==0)b[p++]=a[i];
else if(a[i]!=a[i-1])b[p++]=a[i];
}
BigInteger son=null,mo=null;
for(int i=1; i<p; ++i)
{
BigInteger x=BigInteger.valueOf(b[i]*b[0]);
BigInteger y=BigInteger.valueOf((b[i]-b[0])*2);
BigInteger ml=x.gcd(y);
x=x.divide(ml);
y=y.divide(ml);
if(i==1)
{
son=x;
mo=y;
}
else
{
mo=mo.gcd(y);
BigInteger g=son.gcd(x);
son=son.multiply(x.divide(g));
}
}
System.out.println(son+" "+mo);
}
}
}