주의사항
(x1, y1)과 (x2, y2)가 같은 경우도 생각해야 함!
원 하나가 다른 원 하나를 포함하는 경우도 생각해야 함. 포함하여 접점이 1개일 수도 있고, 포함해서 접점이 없을 수도 있다.
근데 이 모든 것을 간단하게 처리하는 방법도 있다.
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int main(void) {
int t;
scanf("%d", &t);
while(t--) {
double x1, y1, x2, y2;
double dist[3];
scanf("%lf %lf %lf %lf %lf %lf", &x1, &y1, &dist[0], &x2, &y2, &dist[1]);
dist[2]=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
sort(dist, dist+3);
if(dist[0]==0 && dist[1]==dist[2]) {
printf("-1\n");
}
else if(dist[2]>dist[1]+dist[0]) {
printf("0\n");
}
else if(dist[2]==dist[1]+dist[0]) {
printf("1\n");
}
else {
printf("2\n");
}
}
return 0;
}
댓글 없음:
댓글 쓰기