조규현15 2015. 7. 7. 18:10
반응형

https://www.acmicpc.net/problem/1002

 

1002번: 터렛

각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.

www.acmicpc.net

3가지의 예외 케이스를 잘 구분하고 처리하면 된다.

 

#include <stdio.h>

#include <math.h>

int main(void)

{

    int test;

    int x1, y1, x2, y2, r1, r2;

    double d;

    int ret;

    scanf("%d", &test);

    while (test--)
    {

        scanf("%d %d %d %d %d %d", &x1, &y1, &r1, &x2, &y2, &r2);

        d = sqrt((double)((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)));

        if (r1 > r2)
        {

            int temp;

            temp = r1;

            r1 = r2;

            r2 = temp;
        }

        if (d < r2 + r1 && d > r2 - r1)

            ret = 2;

        else if (r1 + r2 == d || d == r2 - r1)

            ret = 1;

        else

            ret = 0;

        if (x1 == x2 && y1 == y2)

        {

            if (r1 == r2)

                ret = -1;

            else

                ret = 0;
        }

        printf("%d\n", ret);
    }

    return 0;
}
반응형