반응형

문제 출처

 

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

 

1002번: 터렛

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

www.acmicpc.net

 

 

 

문제 이해하기

 

두 좌표 (x1,y1) 지점에 반지름 r1인 원 하나와 (x2,y2) 지점에 반지름 r2인 원 하나가 교차하는 개수를 찾는 것이 핵심이다.

 

 

두 원의 위치관계

 

 

문제 조건

 

1. 조건 (x1,y1)와 (x2,y2)가 같다

   1-1  r1,r2가 같으면 (-1) 출력

   1-2  r1,r2가 다르면 (0) 출력

 

2. 1의 조건이 틀릴때

   2-1 (r1+r2) > i > |(r1-r2)|  교차점이 2개

   2-2 (r1+r2) == i  교차점이 1개

   2-3 (r1+r2) < i  교차점이 0개

 

 

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
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int main(int argc, char *argv[]) {
    
    int x1,x2,y1,y2,r1,r2,cnt,loop;
    
        scanf("%d",&cnt);
    
    for(loop=0;loop<cnt;loop++){
        scanf("%d %d %d %d %d %d",&x1,&y1,&r1,&x2,&y2,&r2);        
        double i = sqrt(pow(x1-x2,2)+pow(y1-y2,2));    
        
        if(x1==x2&&y1==y2){ 
            if(r1 == r2)
                printf("-1\n");
            else
                printf("0\n");        
        }else if(abs(r1-r2)<&& i<(r2+r1))
            printf("2\n");
        else if(abs(r1-r2)==|| i==(r2+r1))
            printf("1\n");
        else
            printf("0\n");        
    }
    return 0;
반응형

+ Recent posts