POJ 3101 Astronomy 轨道相遇问题,求n个分数的最小公倍数
2016-08-26 08:56
447 查看
题意:
给你一个n,然后给你n个星球的周期。让你求出经过多长时间可以使所有的星球可以在条直线上。
思路:
求轨道相遇问题,设经过了t个时间星球A转的角度为 (2π/T1)*t 星球B转的角度为(2π/T2)*t 他们在一条直线上
所以可得:(2π/T1)*t-(2π/T2)*t=n*π,半圈就相遇,所以n取1。-->t=T1*T2/(2T1-2T2);
然后需要求出所有的星球与第一个星球之间的相遇时间,然后求出这些相遇时间的最小公倍数就是n个星球同时相遇的时间了。所以这里的问题就变成了求分数的最小公倍数问题。
求分数的最小公倍数:分子之间取最小公倍数,分母就是分母之间共同的gcd;
给你一个n,然后给你n个星球的周期。让你求出经过多长时间可以使所有的星球可以在条直线上。
思路:
求轨道相遇问题,设经过了t个时间星球A转的角度为 (2π/T1)*t 星球B转的角度为(2π/T2)*t 他们在一条直线上
所以可得:(2π/T1)*t-(2π/T2)*t=n*π,半圈就相遇,所以n取1。-->t=T1*T2/(2T1-2T2);
然后需要求出所有的星球与第一个星球之间的相遇时间,然后求出这些相遇时间的最小公倍数就是n个星球同时相遇的时间了。所以这里的问题就变成了求分数的最小公倍数问题。
求分数的最小公倍数:分子之间取最小公倍数,分母就是分母之间共同的gcd;
import java.math.BigInteger; import java.util.Arrays; import java.util.Scanner; public class Main{ final static int N=1100; public static BigInteger[] fz=new BigInteger ; public static BigInteger[] fm=new BigInteger ; public static int[] t=new int ; public static int gcd(int a,int b){ return b==0?a:gcd(b,a%b); } public static void main(String[] args){ Scanner cin=new Scanner(System.in); int n,a,b,d; n=cin.nextInt(); for(int i=0;i<n;i++){ t[i]=cin.nextInt(); } Arrays.sort(t,0,n); for(int i=1;i<n;i++){ a=t[i]*t[0]; b=(t[i]-t[0])*2; d=gcd(a,b); fz[i]=BigInteger.valueOf(a/d); fm[i]=BigInteger.valueOf(b/d); } // for(int i=1;i<n;i++){ // System.out.println(fz[i]+"/"+fm[i]); // } BigInteger FZ=fz[1],FM=fm[1],dd; for(int i=2;i<n;i++){ FZ=FZ.multiply(fz[i]).divide(FZ.gcd(fz[i])); FM=FM.gcd(fm[i]); } System.out.println(FZ+" "+FM); } }
相关文章推荐
- poj 3101 Astronomy——求分数的最小公倍数
- POJ 3101 Astronomy 解题报告(大数乘法+分数最小公倍数)
- poj_3101 Astronomy(大整数+分数最小公倍数)
- POJ 3101 Astronomy (挖坑待学Java……最小公倍数---大数表示)
- POJ 3101 Astronomy (挖坑待学Java……最小公倍数---大数表示)
- POj-3101-Astronomy(分数GCD+BigInteger)
- poj 3101 大整数最小公倍数+欧几里得
- HDU 1713 最小公倍数与最大公约数的问题 相遇周期
- POJ - 3101 Astronomy(有理数的公倍数)
- (Relax 数论 1.17)POJ 3101 Astronomy(分数的最小公倍数)
- poj 3101 Astronomy (java 分数的最小公倍数 gcd)
- poj 3101 Astronomy(分数的最小公倍数)
- POJ - 3101 - Astronomy - (JAVA大数,分数的最小公倍数)
- poj 3101 Astronomy(分数的最小公倍数)
- POJ 3101 Astronomy
- HDOJ 1713 相遇周期 (最大公约数与最小公倍数)
- 有关最大公约数最小公倍数的问题
- poj 2226 还是最小点覆盖的匹配问题
- 1-100最小公倍数问题(Java BigInteger版本)
- POJ-3621 Sightseeing Cows 01分数(参数搜索)规划问题-最优比率环