초보개발자

[1002] 터렛 본문

알고리즘/문제해결 소스코드

[1002] 터렛

___yejin 2017. 7. 25. 17:51
  • 입력: 조규현 좌표와 류재명과의 거리(x1, x2, r1), 백승환의 좌표와 류재명과의 거리(x2, y2, r2) (-10,000 ≤ x1,y1,x2,y2 ≤ 10,000 정수, r1,r2 ≤ 10,000 자연수)
  • 출력: 류재명의 좌표가 될 수 있는 좌표의 경우의 수. 만약 무한대라면 -1
  • 소스코드
  • 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
    #define _CRT_SECURE_NO_WARNINGS
    #include <cstdio>
    #include <cmath>
    using namespace std;
     
     
    int main() {
        int t;
        scanf("%d", &t);
        while (t--) {
            int x1, y1, x2, y2, r1, r2;
            scanf("%d%d%d%d%d%d", &x1, &y1, &r1, &x2, &y2, &r2);
     
            double d = sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2));
     
            if (d == 0 && r1 - r2 == 0)
                printf("-1\n");
            else if (d == 0 || r1 + r2 < d || abs(r1 - r2) > d)
                printf("0\n");
            else if (r1 + r2 > d && abs(r1 - r2) < d)
                printf("2\n");
            else if(r1 + r2 == d || abs(r1 - r2) == d)
                printf("1\n");
     
        }
        return 0;
    }
    단순히 두 원의 위치관계로 문제를 풀면 된다. 


'알고리즘 > 문제해결 소스코드' 카테고리의 다른 글

[9663] N-Queen  (0) 2017.07.27
[1987] 알파벳  (0) 2017.07.26
[9095] 1, 2, 3 더하기  (0) 2017.07.25
[1697] 숨바꼭질  (0) 2017.07.25
[2805] 나무 자르기  (0) 2017.07.25
Comments