1002_터렛
링크
https://www.acmicpc.net/problem/1002
풀이
이 문제는 GPS 원리를 이용한 문제입니다.
2차원 평면이기 때문에 원래 3개의 터렛이 존재한다면 위치를 구할 수 있겠지만, 2개의 터렛만 있습니다.
이 문제는 두 원의 교점이 류재명이 있을 수 있는 위치가 됩니다.
두 원의 교점의 개수를 구하기 위해서 두 원의 위치 관계를 잘 이용해서 풀면 됩니다.
우선 거리와 반지름을 알아내야 합니다.
그리고 두 원이 일치할 때, 두 점에서 만날 때, 접할 때, 만나지 않을 때를 체크해서 구하면 됩니다.
코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
#include <cstdio> #include <math.h> #include <algorithm> using namespace std;
int T, x, y, xx, yy; double d, r, rr;
int main() { scanf("%d", &T);
while (T--) { scanf("%d %d %lf %d %d %lf", &x, &y, &r, &xx, &yy, &rr);
if (r > rr) swap(r, rr); //r1 <= r2 d = sqrt((xx - x)*(xx - x) + (yy - y)*(yy - y));
if (d == 0 && r == rr) { //일치 printf("-1\n"); }
else if (rr-r < d && rr+r > d) { //두 점에서 만남 printf("2\n"); }
else if (rr - r == d) { //내접함 printf("1\n"); }
else if (rr + r == d) { //외접함 printf("1\n"); }
else if (rr + r > d) { //만나지 않음 printf("0\n"); }
else if (rr - r < d) { //포함 관계 printf("0\n"); } }
return 0; } |
'PS > BOJ' 카테고리의 다른 글
[백준 BOJ] 1026 보물 (0) | 2018.10.28 |
---|---|
[백준 BOJ] 1009 분산처리 (0) | 2018.10.27 |
[백준 BOJ][DP] 2167 2차원 배열의 합 (2) | 2018.08.21 |
[백준 BOJ][DP] 9465 스티커 (0) | 2018.08.21 |
[백준 BOJ][DP] 1149 RGB거리 (0) | 2018.07.28 |