372
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
- 1≤n≤1015
- 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