poj 3101 Astronomy
2个星球周期为a,b。则相差半周的长度为a*b/(2*abs(a-b)),对于n个只需求这n个
分数的最小公倍数即可!
公式:
分数的最小公倍数 = 分子的最小公倍数/分母的最大公约数
由于涉及到大数所以用java写的方便!
import java.math.*;
import java.util.*; public class Main {
public static void main(String arg[]){
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();
int an[] = new int[n];
int a[] = new int[n];
int b[] = new int[n];
int i,j,k;
for (i=0;i<n;i++)
an[i] = cin.nextInt();
Arrays.sort(an);
for (i=1,j=1;i<n;i++)
if (an[i]!=an[i-1])
an[j++] = an[i];
for (i=1,k=0;i<j;i++){
a[k] = (an[i] - an[i-1])*2;
b[k] = an[i] * an[i-1];
int t = gcd(a[k],b[k]);
a[k] /= t;
b[k++] /= t;
}
BigInteger ans1 = BigInteger.valueOf(a[0]),ans2 = BigInteger.valueOf(b[0]),ans;
for (i=1;i<k;i++){
ans1 = ans1.gcd(BigInteger.valueOf(a[i]));
ans = ans2.multiply(BigInteger.valueOf(b[i]));
ans2 = ans.divide(ans2.gcd(BigInteger.valueOf(b[i])));
}
ans = ans2.gcd(ans1);
System.out.println(ans2.divide(ans)+" "+ans1.divide(ans));
}
public static int gcd(int a,int b){
int t;
if (a<b){
t = a;
a = b;
b = t;
}
while(true){
if (b==0) break;
t = a;
a = b;
b = t%b;
}
return a;
}
}
poj 3101 Astronomy的更多相关文章
- poj 3101 Astronomy(分数的最小公倍数)
http://poj.org/problem? id=3101 大致题意:求n个运动周期不全然同样的天体在一条直线上的周期. 这题我是看解题报告写的,没想到选用參照物,用到了物理中的角速度什么的. 由 ...
- poj 3101 Astronomy (java 分数的最小公倍数 gcd)
题目链接 要用大数,看了别人的博客,用java写的. 题意:求n个运动周期不完全相同的天体在一条直线上的周期. 分析:两个星球周期为a,b.则相差半周的长度为a*b/(2*abs(a-b)),对于n个 ...
- POJ 3101 大数+gcd
题目大意: 星星作圆周运动的周期给出,若已连成一条线,下一次所有星星在同一条线上的时间 用分数形式输出 这里我们可以利用追及问题来计算出两个星星之间连成一条直线的时间,也即速度快的星星追上速度慢的星星 ...
- poj很好很有层次感(转)
OJ上的一些水题(可用来练手和增加自信) (POJ 3299,POJ 2159,POJ 2739,POJ 1083,POJ 2262,POJ 1503,POJ 3006,POJ 2255,POJ 30 ...
- POJ题目分类推荐 (很好很有层次感)
著名题单,最初来源不详.直接来源:http://blog.csdn.net/a1dark/article/details/11714009 OJ上的一些水题(可用来练手和增加自信) (POJ 3299 ...
- [转] POJ数学问题
转自:http://blog.sina.com.cn/s/blog_6635898a0100magq.html 1.burnside定理,polya计数法 这个大家可以看brudildi的<组合 ...
- POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理
Halloween treats Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7644 Accepted: 2798 ...
- POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理
Find a multiple Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7192 Accepted: 3138 ...
- POJ 2965. The Pilots Brothers' refrigerator 枚举or爆搜or分治
The Pilots Brothers' refrigerator Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22286 ...
随机推荐
- [大牛翻译系列]Hadoop 翻译文章索引
原书章节 原书章节题目 翻译文章序号 翻译文章题目 链接 4.1 Joining Hadoop(1) MapReduce 连接:重分区连接(Repartition join) http://www.c ...
- 重拾C,一天一点点_5
switch(表达式){ case 整型常量表达式:语句序列 case 整型常量表达式:语句序列 default:语句序列} while(表达式) 语句 for(表达式1; 表 ...
- SQL 查询分析器操作(修改、添加、删除)表及字段等
一.库操作1..创建数据库命令:create database <数据库名>例如:建立一个名为xhkdb的数据库mysql> create database xhkdb; 2.显示所 ...
- spring与MyBatis结合
下面将介绍使用spring+mybatis的开发样例: 首先,笔者创建的是一个maven工程,在开发先先导入相关的依赖jar: pom.xml: <dependencies> <de ...
- Python操作列表的常用方法
下面列出列表常用的方法操作列表以及小例子: 1. Append 在列表末尾添加元素,需在列表末尾添加元素,需要注意几个点: A. append中添加的参数是作为一个整体 & ...
- 《.NET简单企业应用》项目开发环境
项目开始,开发团队需要构建一套开发环境,主要包含:开发工具.代码管理/版本控制系统.任务和Bug管理系统和持续集成(CI)系统.本文主要列举项目开发中经常使用的开发工具和第三方库. 本文所列工具根据前 ...
- 用开源AOP简化MVVM框架
本文的前提是知晓基于Xaml开发,本文以WPF为例 一 .简化属性通知事件 普通的属性通知会写一个基于INotifyPropertyChanged接口的类 public class RasieProp ...
- MySQL显示连接的数据库名
在默认下,MySQL在use databasename的时候,是不显示连接的库名! mysql> show databases;+--------------------+| Database ...
- css 动画效果
要搞就搞明白,一知半解时停止研究 损失最大 css3意义: CSS3 动画 通过 CSS3,我们能够创建动画,这可以在许多网页中取代动画图片.Flash 动画以及 JavaScript. 重点 ...
- MVC学习系列——Model验证扩展
MVC中,实现了前端后端的验证. 前端验证.步骤: web.config这两个得开启: <add key="ClientValidationEnabled" value=&q ...