HDU

来源:互联网 发布:北师大网络教育登录 编辑:程序博客网 时间:2024/06/01 23:00

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6206

题目大意:三个点形成圆,判断另一个点是否在圆内

解题思路:求出圆,判断点到圆心的距离和半径的关系,C++卡精度,现学Java- =

AC代码:

import java.math.*;import java.io.*;import java.util.*;public  class Main{    public static void main(String[] args)    {       Scanner in = new Scanner(new BufferedInputStream(System.in));        int t;       BigDecimal x1,y1,x2,y2,x3,y3,x4,y4,u1,u2,d11,d12,d21,d22,x,y,dis;       t=in.nextInt();       for(int i=1;i<=t;++i)       {           x1=in.nextBigDecimal();           y1=in.nextBigDecimal();           x2=in.nextBigDecimal();           y2=in.nextBigDecimal();           x3=in.nextBigDecimal();           y3=in.nextBigDecimal();           x4=in.nextBigDecimal();           y4=in.nextBigDecimal();           u1=x2.pow(2).subtract(x1.pow(2)).add(y2.pow(2).subtract(y1.pow(2))).divide(new BigDecimal(2));           u2=x3.pow(2).subtract(x1.pow(2)).add(y3.pow(2).subtract(y1.pow(2))).divide(new BigDecimal(2));           d11=x2.subtract(x1);           d12=y2.subtract(y1);           d21=x3.subtract(x1);           d22=y3.subtract(y1);           x=u1.multiply(d22).subtract(u2.multiply(d12)).divide(d11.multiply(d22).subtract(d21.multiply(d12)));           y=u2.multiply(d11).subtract(u1.multiply(d21)).divide(d11.multiply(d22).subtract(d21.multiply(d12)));           dis=x.subtract(x1).pow(2).add(y.subtract(y1).pow(2));           if(dis.compareTo(x.subtract(x4).pow(2).add(y.subtract(y4).pow(2)))>=0)               System.out.println("Rejected");           else                System.out.println("Accepted");       }    }}
原创粉丝点击