0023-Circles Intersection
問題(外部リンク)
実装の概要
円が共有点を持ったり、一方の円が他方を含むかどうかは全て中心点どうしの距離と半径の関係から考えることができます。
距離はMathクラスなどを使って自分で実装しても構いませんが、ここではPoint2D.Doubleクラスのメソッドを使用しました。
public class Main { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); for(int i = 0; i < n ; i++){ String[] strArray = br.readLine().split(" "); Point2D.Double o1 = new Point2D.Double(Double.parseDouble(strArray[0]), Double.parseDouble(strArray[1])); double r1 = Double.parseDouble(strArray[2]); Point2D.Double o2 = new Point2D.Double(Double.parseDouble(strArray[3]), Double.parseDouble(strArray[4])); double r2 = Double.parseDouble(strArray[5]); double dist = o1.distance(o2); int result; if(dist > r1+r2){ result = 0; } else if (r1 >= r2 && r1 > dist+r2) { result = 2; } else if (r1 < r2 && r2 > dist+r1){ result = -2; } else { result = 1; } System.out.println(result); } } }