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 45 46 47 48 49 50 51 | #include <stdio.h> #include <math.h> int input(); int solve(); int output(); int x1,y1,r1,x2,y2,r2; int result; int testcase; int main() { scanf("%d", &testcase); // 테스트 케이스 개수 입력 for(int t=1; t<=testcase; t++) { input(); solve(); output(); } return 0; } int solve() { double d = sqrt((double)((x2 - x1)*(x2 - x1)+(y2 - y1)*(y2 - y1))); // 두 점 사이의 거리 공식 ㅋ int sum = r1 + r2; int min = abs(r1 - r2); if(x1==x2 && y1==y2) // 두 원의 원점이 같은 경우 { if(r1 == r2) result = -1; // 두 원 일치시 else result = 0; } else // 원점이 다른 경우 { if(min < d && d < sum) result = 2;// 서로 다른 두 점에서 만나는 경우 else if(d == min || d == sum) result = 1;// 내접 또는 외접 할 때 else if(d == 0 || d > sum || d <min) result = 0; // 두 원이 안만날 때 } return 0; } int input (){ scanf("%d %d %d %d %d %d", &x1, &y1, &r1, &x2, &y2, &r2); return 0; } int output() { printf("%d\n", result); return 0; } | cs |
두 원의 교점을 구하는 문제.
'흑역사 > 백준 알고리즘' 카테고리의 다른 글
[Algorithm] 백준 2439 별찍기-2 (0) | 2018.07.27 |
---|---|
[Algorithm] 백준 11718번 그대로 출력하기 (0) | 2018.07.19 |
[Algorithm] 백준 10172번 개 (0) | 2018.07.19 |