# PBinfo #2144 – diofantic – Rezolvare C++

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

## Enunț

Se dau numerele naturale nenule a, b, c, n, urmate de o secvența de n numere naturale distincte ordonate crescător, notată cu s.

Cerința
Scrieți în limbajul C++ definiția completă a subprogramului diofantic care are 5 parametri, după cum urmează: 

n – prin care primește un număr natural nenul ce reprezintă numărul de elemente ale secvenței
s – prin care primește un tablou unidimensional care reține elementele secvenței, indexate de la 1 la n
a – prin care primește un număr natural nenul
b – prin care primește un număr natural nenul
c – prin care primește un număr natural nenul.


Subprogramul returnează numărul de perechi (x,y) care verifică ecuația: a•x2 +  b•y2 = c , unde x și y aparțin secvenței s, cu x≠y.

Restricții și precizări

2 ≤ n ≤ 50.000
0 < a,b < 200
0 < c < 1.000.000.000
numerele din secvența s sunt mai mici decât 65.535
parametrii sunt, în această ordine: n, s, a, b, c.

Exemplu:
Fie secvența:
5
0 3 4 5 18
Pentru a=1, b=1, c=25 funcția va returna valoarea 4.
Cele 4 perechi sunt: (3,4), (4,3), (0,5), (5,0).

Important
Soluția propusă va conține doar definiția subprogramului cerut. Prezența în soluție a altor instrucțiuni poate duce erori de compilare sau de execuție care vor avea ca efect depunctarea soluției.

## Cod sursă C++

```cpp
int diofantic(int n, int v[50002], int a, int b, int c) {
    int contor = 0;
    bool adv, temp = true;
    for (int x = 1; x <= n && temp == true; x++) {
        if (v[x] * v[x] * a <= c)
            temp = true;
        else
            temp = false;
        adv = true;
        for (int y = 1; y <= n && adv == true; y++)
            if (v[x] != v[y]) {
                if (v[x] * v[x] * a + v[y] * v[y] * b == c)
                    contor++;
                else if (v[x] * v[x] * a + v[y] * v[y] * b > c)
                    adv = false;
            }
    } return contor;
}
```

## Resurse

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