poj 3101 Astronomy

http://poj.org/problem?id=3101

这道题就是求所有分子的最小共倍数和分母的最大公约数。

 1 import java.math.BigInteger;
2 import java.util.*;
3 import java.util.Arrays;
4 public class Main {
5 public static void main(String []args)
6 {
7 Scanner cin=new Scanner(System.in);
8 int n=cin.nextInt();
9 int f2[]=new int[n];
10 BigInteger f[]=new BigInteger[2000];
11 BigInteger a[]=new BigInteger[2000];
12 BigInteger b[]=new BigInteger[2000];
13 BigInteger m1=new BigInteger("2");
14 for(int i=0; i<n; i++)
15 {
16 f2[i]=cin.nextInt();
17 }
18 Arrays.sort(f2);
19 int c=1;
20 f[0]=BigInteger.valueOf(f2[0]);
21 for(int i=1; i<n; i++)
22 {
23 if(f2[i]!=f2[i-1])
24 {
25 f[c++]=BigInteger.valueOf(f2[i]);
26 }
27 }
28 int c1=0;
29 for(int i=1; i<c; i++)
30 {
31 a[c1]=(f[i].subtract(f[i-1])).multiply(m1);
32 b[c1]=f[i].multiply(f[i-1]);
33 BigInteger m=a[c1].gcd(b[c1]);
34 a[c1]=a[c1].divide(m);
35 b[c1]=b[c1].divide(m);
36 c1++;
37 }
38 BigInteger ans1=a[0];
39 BigInteger ans2=b[0];
40 BigInteger ans;
41 for(int i=1; i<c1; i++)
42 {
43 ans1=ans1.gcd(a[i]);
44 ans=ans2.multiply(b[i]);
45 ans2=ans.divide(ans2.gcd(b[i]));
46 }
47 ans=ans1.gcd(ans2);
48 System.out.println(ans2.divide(ans)+" "+ans1.divide(ans));
49
50 }
51 }

View
Code

时间: 2024-10-05 17:30:17

poj 3101 Astronomy的相关文章

poj 3101 Astronomy (java 分数的最小公倍数 gcd)

题目链接 要用大数,看了别人的博客,用java写的. 题意:求n个运动周期不完全相同的天体在一条直线上的周期. 分析:两个星球周期为a,b.则相差半周的长度为a*b/(2*abs(a-b)),对于n个只需求这n个 分数的最小公倍数即可. 分数的最小公倍数 = 分子的最小公倍数/分母的最大公约数 1 import java.util.*; 2 import java.math.*; 3 public class Main { 4 public static int [] t = new int [

poj 3101 Astronomy(分数的最小公倍数)

http://poj.org/problem? id=3101 大致题意:求n个运动周期不全然同样的天体在一条直线上的周期. 这题我是看解题报告写的,没想到选用參照物,用到了物理中的角速度什么的. 由于n个天体的周期已知,那么它们的角速度为vi = 2*pi/Ti,若统一选第0个天体为參照物,那么其余天体的相对速度vi' =  2*pi*(T0-Ti)/(T0*Ti)(把周期T同样的天体合为一个天体).则与第0个天体角度相差180度的时间为ti = (T0*Ti)/((T0-Ti)*2). 那么

POJ 3101 Astronomy (大数+LCM)

Astronomy Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 5167   Accepted: 1127 Description There are n planets in the planetary system of star X. They orbit star X in circular orbits located in the same plane. Their tangent velocities a

POJ 3101 大数+gcd

题目大意: 星星作圆周运动的周期给出,若已连成一条线,下一次所有星星在同一条线上的时间 用分数形式输出 这里我们可以利用追及问题来计算出两个星星之间连成一条直线的时间,也即速度快的星星追上速度慢的星星弧度PI t = PI /abs (2PI / t1 - 2PI / t2) = t1 * t2 / (2 * abs(t1 - t2)) 这样前面作为分子后面作为分母,每次得到一个分数记得利用gcd化简 然后把所有两两得到的时间差求个最小公倍数 分数的最大公倍数是分子求最小公倍数, 分母求最大公约

POJ题目分类推荐 (很好很有层次感)

著名题单,最初来源不详.直接来源:http://blog.csdn.net/a1dark/article/details/11714009 OJ上的一些水题(可用来练手和增加自信) (POJ 3299,POJ 2159,POJ 2739,POJ 1083,POJ 2262,POJ 1503,POJ 3006,POJ 2255,POJ 3094) 初期: 一.基本算法: 枚举. (POJ 1753,POJ 2965) 贪心(POJ 1328,POJ 2109,POJ 2586) 递归和分治法. 递

POJ 刷题指南

OJ上的一些水题(可用来练手和增加自信) (POJ 3299,POJ 2159,POJ 2739,POJ 1083,POJ 2262,POJ 1503,POJ 3006,POJ 2255,POJ 3094) 初期: 一.基本算法: 枚举. (POJ 1753,POJ 2965) 贪心(POJ 1328,POJ 2109,POJ 2586) 递归和分治法. 递推. 构造法.(POJ 3295) 模拟法.(POJ 1068,POJ 2632,POJ 1573,POJ 2993,POJ 2996) 二

数论poj题目

http://blog.sina.com.cn/s/blog_76f6777d0101ir50.html 1.素数,整数分解,欧拉函数 素数是可能数论里最永恒,最经典的问题了.素数的判断,筛法求素数,大素数的判断···还有很多其他问题都会用到素数. *最水最水的:(心情不爽时用来解闷吧) pku1365 Prime Land pku2034 Anti-prime Sequences pku2739 Sum of Consecutive Prime Numbers pku3518 Prime Ga

[转] POJ数学问题

转自:http://blog.sina.com.cn/s/blog_6635898a0100magq.html 1.burnside定理,polya计数法 这个大家可以看brudildi的<组合数学>,那本书的这一章写的很详细也很容易理解.最好能完全看懂了,理解了再去做题,不要只记个公式. *简单题:(直接用套公式就可以了) pku2409 Let it Bead      http://acm.pku.edu.cn/JudgeOnline/problem?id=2409 pku2154 Co

(2 sat) poj 3207

Ikki's Story IV - Panda's Trick Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 8437   Accepted: 3101 Description liympanda, one of Ikki’s friend, likes playing games with Ikki. Today after minesweeping with Ikki and winning so many tim