본문 바로가기

[BAEKJOON] 1002번: 터렛


한 정점(x₁, y₁)과의 거리가 r₁보다 작거나 같고 x좌표와 y좌표가 정수인 모든 점과 

한 정점(x₂, y₂)과의 거리가 r₂보다 작거나 같고 x좌표와 y좌표가 정수인 모든 점 중에서

같은 점의 개수를 출력하는 문제.


다시 말해 원 (x-x₁)² + (y-y₁)² = r₁²과 원 (x-x₂)² + (y-y₂)² = r₂²의 교점의 개수를 출력하는 문제다.



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
#include <stdio.h>
 
int run();
 
int main()
{
    return run();
}
 
int run()
{
    int x1, y1, r1, x2, y2, r2;
    int r3;
    int num;
    int diff;
 
    scanf("%d"&num);
 
    for (; num; --num)
    {
        scanf("%d %d %d %d %d %d"&x1, &y1, &r1, &x2, &y2, &r2);
 
        r3 = (x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1);
        diff = r2 - r1;
 
        if (diff < 0) { diff *= -1; }
 
        if (r3)
        {
            if ((diff*diff < r3) && (r3 < (r1 + r2)*(r1 + r2))) { printf("2\n"); }
            else if ((r3 == diff*diff) || (r3 == (r1 + r2)*(r1 + r2))) { printf("1\n"); }
            else { printf("0\n"); }
        }
        else
        {
            if (r1 == r2) { printf("-1\n"); }
            else { printf("0\n"); }
        }
    }
 
    return 0;
}
cs


참고: https://mathbang.net/101

'Programming > Solutions' 카테고리의 다른 글

[Project Euler] Problem 004  (0) 2019.03.20
[Project Euler] Problem 003  (0) 2019.03.19
[BAEKJOON] 2839번: 설탕 배달  (0) 2019.03.19
[Project Euler] Problem 002  (0) 2019.03.18
[Project Euler] Problem 001  (0) 2019.03.17