# PBinfo #3207 – Cercuri – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

Cerința
Se dau coordonatele şi razele a două cercuri. Să se determine în câte puncte se intersectează cele două cercuri.

Date de intrare
Programul citește de la tastatură numerele reale r1, x1, y1, raza şi coordonatele primului cerc, şi numerele reale r2, x2, y2, raza şi coordonatele ale celui de-al doilea cerc.

Date de ieșire
Programul va afişa pe ecran numărul de puncte în care se intersectează cele două cercuri, sau infinit dacă cercurile sunt identice.

Restricții și precizări

Numerele r1 şi r2 sunt numere reale, pozitive şi mai mici decât 100000.
Numerele x1, x2, y1, y2 sunt numere reale cu valoarea absolută mai mică decât 10000.

Exemplu 1:
Intrare

4 2 -2
2 -3 1
Ieșire

2
Exemplu 2:
Intrare

8 0 5
2 0 -5
Ieșire

1
Explicație
Cercurile de la exemplul 1 se intersectează în 2 puncte, iar cele de la exemplul 2 sunt tangente.

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int main() {
    long double r1, x1, y1, r2, x2, y2;
    cin >> r1 >> x1 >> y1 >> r2 >> x2 >> y2;
    if (r1 == r2 && x1 == x2 && y1 == y2)
        cout << "infinit";
    else if ((x1 - x2) * (x1 - x2) +
             (y1 - y2) * (y1 - y2) == 
             (r1 + r2) * (r1 + r2) ||
             (x1 - x2) * (x1 - x2) + 
             (y1 - y2) * (y1 - y2) ==
             (r1 - r2) * (r1 - r2)) cout << 1;
    else if ((x1 - x2) * (x1 - x2) +
             (y1 - y2) * (y1 - y2) > 
             (r1 + r2) * (r1 + r2) ||
             (r1 - r2) * (r1 - r2) >
             (x1 - x2) * (x1 - x2) +
             (y1 - y2) * (y1 - y2) ||
             (x1 - x2) * (x1 - x2) + 
             (y1 - y2) * (y1 - y2) == 0) cout << 0;
    else cout << 2;
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/3207)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/3207/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-3207/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
