A지점의 터렛과 B지점의 터렛이 있다.
본부에서 각 터렛에 적군의 위치를 계산하라는 명령이 떨어졌고, 각 터렛들은 자신의 위치에서 현재 적까지의 거리를 계산했다.
A지점 터렛의 좌표(x1, y1)
, B지점 터렛의 좌표(x2, y2)
가 주어지고, 각 터렛과 적군의 거리r1, r2
가 주어졌을 때, 적군이 있을 수 있는 좌표의 수를 구하라.
첫째 줄에 테스트 케이스의 개수 T가 주어진다.
x1, y1, x2, y2는-10,000 <= n <= 10,000
인 정수이며, r1, r2는10,000보다 작거나 같은
자연수이다.
각 테스트 케이스마다 적군이 있을 수 있는 위치의 수를 출력하고,
만약 위치의 수가 무한대일 경우 -1
을 출력한다.
1. distance == 0 and r1 == r2
두 터렛이 같은 위치에 있고, 적군과의 거리가 같을 때, 적이 있을 수 있는 위치가 무한대이다.
2. abs(r1 - r2) < distance < r1 + r2
두 터렛의 거리가 적군과의 거리의 합보다는 작지만 각 적군과의 거리의 차보다는 클 때, 두 원이 만나는 점이 두군데이다.
3. r1+r2 == distance or abs(r1-r2) == distance
두 터렛에서 관측한 적군의 거리의 합이 두 터렛의 거리와 같다. 혹은, 두 거리의 차이가 터렛사이 거리과 같다면, 두 원은 한점에서 만난다.
4. r1+r2 < distance or distance < abs(r2 - r1)
각 터렛에서 관측한 적의 위치가 서로 멀어 원이 겹치지 않는다. 또는 같은 위치에서 서로 관측한 적군과의 거리가 다를 때 또한 겹치지 않는다.
import math
num = int(input())
data = []
for i in range(num):
data.append(list(map(int, input().split(' '))))
for x1, y1, r1, x2, y2, r2 in data:
distance = math.sqrt((x1-x2)**2 + (y1-y2)**2)
if(distance == 0 and r1==r2):
print(-1)
elif(abs(r1 - r2) < distance < r1 + r2):
print(2)
elif(r1+r2 == distance or abs(r1-r2) == distance): #한점에서 만날때
print(1)
elif(r1+r2 < distance): #멀어서 떨어짐
print(0)
elif(distance < abs(r2 - r1)):
print(0)