zoukankan      html  css  js  c++  java
  • HDU 6207:Apple(Java高精度)

    题目链接

    题意

    给出三个圆上的点,和一个目标的点,问目标点是否在这三个点构成的圆外面。

    思路

    许久没见过的Java高精度,不要加package!!!

    
    import java.math.BigDecimal;
    import java.util.Scanner;
    
    public class Main {
        
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            int t = scan.nextInt();
            while(t > 0) {
                t--;
                Point a = new Point(), b = new Point(), c = new Point(), tar = new Point();
                a.x = scan.nextBigDecimal();
                a.y = scan.nextBigDecimal();
                b.x = scan.nextBigDecimal();
                b.y = scan.nextBigDecimal();
                c.x = scan.nextBigDecimal();
                c.y = scan.nextBigDecimal();
                tar.x = scan.nextBigDecimal();
                tar.y = scan.nextBigDecimal();
                Point zhong = new Point();
                zhong.Waixin(a, b, c);
    //            System.out.println("zhongx : " + zhong.x + ", zhongy : " + zhong.y);
    //            System.out.println("tarx : " + tar.x + ", tary : " + tar.y);
                BigDecimal d1 = zhong.Cal(tar, zhong); // 目标点和圆心距离
                BigDecimal d2 = zhong.Cal(a, zhong); // 半径
    //            System.out.println("d1 : " + d1 + "
    " + "d2 : " + d2);
                if(d1.compareTo(d2) != 1) System.out.println("Rejected");
                else System.out.println("Accepted");
            }
        }
    }
    
    class Point {
        public BigDecimal x;
        public BigDecimal y;
        
        void Waixin (Point a, Point b, Point c) {
            BigDecimal two = new BigDecimal(2);
            
            BigDecimal a1 = b.x.subtract(a.x), b1 = b.y.subtract(a.y); 
            
            BigDecimal aa1 = a1.multiply(a1);
            
            BigDecimal bb1 = b1.multiply(b1);
            
            BigDecimal cc1 = aa1.add(bb1);
            
            BigDecimal c1 = aa1.add(bb1);
            
            c1 = c1.divide(two);
            
            BigDecimal a2 = c.x.subtract(a.x), b2 = c.y.subtract(a.y); 
            
            BigDecimal aa2 = a2.multiply(a2);
            
            BigDecimal bb2 = b2.multiply(b2);
            
            BigDecimal c2 = aa2.add(bb2);
            
            c2 = c2.divide(two);
            
            BigDecimal d1 = a1.multiply(b2);
            
            BigDecimal d2 = a2.multiply(b1);
            
            BigDecimal d = d1.subtract(d2);
            
            BigDecimal qq = c1.multiply(b2), ww = c2.multiply(b1), ee = a1.multiply(c2), rr = a2.multiply(c1);
            
            BigDecimal ii = qq.subtract(ww), jj = ee.subtract(rr);
            
            ii = ii.divide(d); 
            jj = jj.divide(d);
            
            this.x = a.x.add(ii);
            this.y = a.y.add(jj);
        }
        
        BigDecimal Cal(Point a, Point b) {
            BigDecimal xx = a.x.subtract(b.x), yy = a.y.subtract(b.y);
            xx = xx.multiply(xx);
            yy = yy.multiply(yy);
            xx = xx.add(yy);
            return xx;
        }
    }
    
  • 相关阅读:
    SSWA jsp 函数 的页面
    fun_function.execute
    pa_transaction_interface_all
    EBS mo_glob_org_access_tmp表的分析
    R12将银行和分行都使用TCA管理
    ap_invoice_distributions_all到xla_ae_lines
    python使用uuid和guid
    js http请求
    DES加密
    wxPython操作图形用户界面
  • 原文地址:https://www.cnblogs.com/fightfordream/p/7536910.html
Copyright © 2011-2022 走看看