Определить количество точек пересечения двух окружностей.
6 чисел x1, y1, r1, x2, y2, r2, где x1, y1, x2, y2 - координаты центров окружностей, а r1, r2 – их радиусы. Все числа - действительные, не превышают по модулю 1000000000, заданы не более чем с 3-мя знаками после запятой.
Количество точек пересечения. Если точек пересечения бесконечно много, то вывести -1.
#include "iostream"
#include "math.h"
using namespace std;
int main(){
long x1,y1,r1,x2,y2,r2,dl,f;
cin>>x1>>y1>>r1>>x2>>y2>>r2;
dl=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
if (r2>r1)
{
f=r1;
r1=r2;
r2=f;
f=x2;
x1=x2;
x2=f;
f=y1;
y1=y2;
y2=f;
}
if(x1==x2&&y1==y2&&r1==r2) cout << "-1" << endl;
else
if(r1+r2==dl||dl==r1-r2) cout << "1" << endl; else
if (r1+r2 < dl||dl < r1-r2) cout << "0" << endl; else
cout << "2" << endl;
}
Назад
Есть решение которого нет на сайте? Пиши admin@devexe.top