zoukankan      html  css  js  c++  java
  • POJ 3101 Astronomy (角速度啊,高中物理啊。。。T_T)

      第一次做训练计划的时候没有做出来。。。回头又看了看, 就是个高中物理题。已知周期,求多长时间运行到一条线上。

    已知每个行星的角速度为vi = 2*π/Ti,选择一个行星T0作为坐标系,则其他行星的相对速度为vi' = (T0 - Ti)*2π/(T0*Ti)。则角度绕过半个圆周的时间为Ti' = π/vi' = (T0*Ti)/((T0 - Ti)*2)

    这样就是求所有Ti‘的分子的LCM和所有Ti’分母的GCD。

    ps:注意两点,1、去掉周期相同的,2、用BigInteger。

    View Code
    import java.util.*;
    import java.io.*;
    import java.math.*;
    
    public class Main {
        final static int N = 1024;
        public static BigInteger[] fz = new BigInteger[N];
        public static BigInteger[] fm = new BigInteger[N];
        
        public static int[] t = new int[N];
        public static int[] tt = new int[N];
        
        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, i, a, b, g;
            n = cin.nextInt();
            for(i = 0; i< n; ++i) {
                t[i] = cin.nextInt();            
            }
            Arrays.sort(t, 0, n);
            int m = 0;
            tt[m++] = t[0];
            for(i = 1; i < n; ++i) {
                if(t[i] != t[i-1])    tt[m++] = t[i];
            }
            for(i = 1; i < m; ++i) {
                a = tt[i]*tt[0];
                b = (tt[i] - tt[0])*2;
                g = gcd(a, b);
                fz[i] = BigInteger.valueOf(a/g);
                fm[i] = BigInteger.valueOf(b/g);
            }
            BigInteger t1 = fz[1], t2 = fm[1], gg, aa;
            for(i = 2; i < m; ++i) {
                aa = t1.multiply(fz[i]);
                gg = t1.gcd(fz[i]);
                t1 = aa.divide(gg);
                
                t2 = t2.gcd(fm[i]);
            }
            System.out.println(t1 + " " + t2);
        }
    }
  • 相关阅读:
    NPIV介绍
    PowerShell随笔2_分支 选择 循环 特殊变量
    socket编程原理
    Linux查看物理CPU个数、核数、逻辑CPU个数
    Markdown 使用指南
    Linux Socket
    YoutubeAPI使用
    Youtube API数据类型
    Linux wpa_cli 调试方法
    linux网络编程
  • 原文地址:https://www.cnblogs.com/vongang/p/2745781.html
Copyright © 2011-2022 走看看