fbpx

Problema #2915 – SumSquare – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Se dă numărul natural n. Determinați dacă numărul se poate scrie ca sumă de două pătrate perfecte. Dacă da, afișați două pătrate perfecte a căror sumă este n, în ordine crescătoare, sau mesajul NU în caz contrar.

Date de intrare

Programul citește de la tastatură numărul n;

Date de ieșire

Programul va afișa pe ecran cele 2 pătrate care alcătuiesc numărul sau mesajul NU în cazul în care nu există.

Restricții și precizări

  • 1n10151n1015
  • dacă există mai multe perechi de pătrate perfecte a căror sumă este n, poate fi afișată oricare

Exemplu

Intrare

169

Ieșire

25 144
#include <bits/stdc++.h>

using namespace std;

int main()
{
    bool ok = false;
    long long int n;
    cin >> n;
    for (int i = 1 ; i * i <= n / 2 && !ok; ++i)
    {
        long long int x = 1LL * i * i;
        long long int y = n - x;
        long long int j = sqrt(y);
        if(1LL * j * j == y && !ok)
            cout << min(y, x) << ' ' << max(x, y), ok = true;
    }
    if(!ok)
        cout << "NU";
    return 0;
}
Comentarii

S-ar putea sa iti placa