poj 3101 Astronomy(分数的最小公倍数)
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)。
那么求得全部ti的最小公倍数就是答案。
最终到重点了。ti作为分数,它们的最小公倍数定义为 : 全部分子的最小公倍数/全部分母的最大公约数数。
因为N太大,须要用大数处理。
又各种百度java。最终A啦。 两点了,洗洗睡吧。
import java.math.*;
import java.util.*;
import java.io.*; public class Main {
public static int [] t = new int [1200];
public static int [] tt = new int [1200]; public static BigInteger [] fz = new BigInteger [1200];
public static BigInteger [] fm = new BigInteger [1200]; public static int gcd(int a, int b){
if(b == 0)
return a;
return gcd(b,a%b);
} public static void main(String[] args) {
int n,m;
Scanner cin = new Scanner(System.in);
n = cin.nextInt(); for(int i = 0; i < n; i++)
t[i] = cin.nextInt(); Arrays.sort(t,0,n); //java中对数组的排序方法
m = 0;
tt[m++] = t[0];
for(int i = 1; i < n; i++){ //把周期同样的缩点
if(t[i] != t[i-1]){
tt[m++] = t[i];
}
} for(int i = 1; i < m; i++){
int a = tt[i] * tt[0];
int b = 2*(tt[i] - tt[0]);
int g = gcd(a,b);
fz[i] = BigInteger.valueOf(a/g);
fm[i] = BigInteger.valueOf(b/g);
}
BigInteger t1 = fz[1],t2 = fm[1]; for(int i = 2; i < m; i++){
BigInteger aa = t1.multiply(fz[i]);
BigInteger gg = t1.gcd(fz[i]);
t1 = aa.divide(gg); t2 = t2.gcd(fm[i]); }
System.out.println(t1 + " " + t2);
} }
poj 3101 Astronomy(分数的最小公倍数)的更多相关文章
- poj 3101 Astronomy (java 分数的最小公倍数 gcd)
题目链接 要用大数,看了别人的博客,用java写的. 题意:求n个运动周期不完全相同的天体在一条直线上的周期. 分析:两个星球周期为a,b.则相差半周的长度为a*b/(2*abs(a-b)),对于n个 ...
- poj 3101 Astronomy
2个星球周期为a,b.则相差半周的长度为a*b/(2*abs(a-b)),对于n个只需求这n个 分数的最小公倍数即可! 公式: 分数的最小公倍数 = 分子的最小公倍数/分母的最大公约数 由于涉及到大数 ...
- poj3101--Astronomy(分数的最小公倍数)
题目链接:id=3101">点击打开链接 题目大意:有n个行星,给出每个行星的旋转的周期.问最少多少时间后n个行星会在一条直线上,初始点在一起,不存在全部的行星都有同一个周期 如果A行 ...
- hdu 1713求分数的最小公倍数
题意中的圈数和天数说反了 #include<stdio.h> __int64 gcd(__int64 a,__int64 b) {/* 比如4/3 3/5 通分20/15 9/15 所以这 ...
- POJ 3101 大数+gcd
题目大意: 星星作圆周运动的周期给出,若已连成一条线,下一次所有星星在同一条线上的时间 用分数形式输出 这里我们可以利用追及问题来计算出两个星星之间连成一条直线的时间,也即速度快的星星追上速度慢的星星 ...
- POJ 2976 01分数规划基础题目
题意: 给你一组"数",一共n个,每个数有两个权值,价钱a[i],代价b[i],让你选择n - k使得 sigma(a[i]) / sigma(b[i]) * 100 ...
- poj 3101Astronomy(圆周追击+分数最小公倍数)
/* 本题属于圆周追击问题: 假设已知两个圆周运动的物体的周期分别是a ,b, 设每隔时间t就会在同一条直线上 在同一条直线上的条件是 角度之差为 PI ! 那么就有方程 (2PI/a - 2PI/b ...
- POJ 3621 Sightseeing Cows 【01分数规划+spfa判正环】
题目链接:http://poj.org/problem?id=3621 Sightseeing Cows Time Limit: 1000MS Memory Limit: 65536K Total ...
- [转] POJ数学问题
转自:http://blog.sina.com.cn/s/blog_6635898a0100magq.html 1.burnside定理,polya计数法 这个大家可以看brudildi的<组合 ...
随机推荐
- PreferenceActivity使用示例
MainActivity如下: package cn.testpreferenceactivity; import android.content.SharedPreferences; import ...
- C++ 虚函数表解析(比较清楚,还可打印虚函数地址)
C++ 虚函数表解析 陈皓 http://blog.csdn.net/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制.关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父 ...
- form表单多值提交
$.ajax({ cache: true, type: "POST", url:ajaxCallUrl, data:$('#yourformid').serialize(),// ...
- 怎么用CIFilter给图片加上各种各样的滤镜_1
近期在做对图像处理的app,而要对图像进行处理,CoreImage是离不开的框架. 上网Google了一下,大部分的博客都是仅仅讲了怎么给图像加上怀旧(CISepiaTone).模糊(CIBloom) ...
- 理解并解决GBK转UTF-8奇数中文乱码(转)
最近在做一个反馈功能,把数据反馈到对方公司网站,我公司是GBK编码,对方公司是UTF-8编码.因此,我需要将GBK编码数据转换成UTF-8编码数据,这样对方网站才不会乱码.最简单的方法是将HttpCl ...
- CURD特性
本节课大纲: 一.ThinkPHP 3 的CURD介绍 (了解) 二.ThinkPHP 3 读取数据 (重点) 对数据的读取 Read $m=new Model('User'); ##返回一个实例 $ ...
- latex表格线的颜色设置(边框添加颜色)
添加了如下包:边框颜色要用到booktabs, colortbl, 包,下面代码里有一个自定义的颜色tabcolor \usepackage{ctexcap} \usepackage{graphicx ...
- c#常见stream操作
原文: c#常见stream操作 常见并常用的stream一共有 文件流(FileStream), 内存流(MemoryStream), 压缩流(GZipStream), 加密流(CrypToStre ...
- sha256
SHA-512 (这些有时候也被称做 SHA-2). 简介 SHA 家族 SHA (Secure Hash Algorithm,译作安全散列算法) 是美国国家安全局 (NSA) 设计,美国国家标准与技 ...
- Installing SSL on CentOS | My Virtual Time Capsule
Installing SSL on CentOS | My Virtual Time Capsule Installing SSL on CentOS Extracted from the Sourc ...