正经题解|圆-切线
2024-06-12 13:31:10
发布于:浙江
30阅读
0回复
0点赞
题目分析
按照圆的位置关系分类讨论即可。
- 两个圆重合时,有无数条切线。
- 两个圆外切时,有 3 条切线。
- 两个圆内切时,有 1 条切线。
- 两个圆相交时,有 2 条切线。
- 两个圆外离时,有 4 条切线。
- 两个圆内含时,不存在切线。
AC代码
#include <iostream>
#include <vector>
using namespace std;
typedef long long ll;
const int N = 2e5 + 10;
void solve() {
int x1,y1,r1;
int x2,y2,r2;
cin >> x1 >> y1 >> r1;
cin >> x2 >> y2 >> r2;
int d = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
int rs = (r1 - r2) * (r1 - r2);
int ra = (r1 + r2) * (r1 + r2);
if (x1 == x2 && y1 == y2 && r1 == r2) {
cout << "INF" << endl;
}else if(d > ra) {
cout << 4 << endl;
}else if(d == ra) {
cout << 3 << endl;
}else if(d > rs && d < ra) {
cout << 2 << endl;
}else if(d == rs) {
cout << 1 << endl;
}else {
cout << 0 << endl;
}
}
int main() {
ios::sync_with_stdio(false);
int t;
cin >> t;
while(t--)solve();
return 0;
}
这里空空如也
有帮助,赞一个