2915 - Sum Square
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
Rezolvare
<syntaxhighlight lang="python" line> import math
def validare_date(n):
"""Functie de validare"""
if not 1 <= n <= 10**15:
print("Numarul introdus trebuie sa fie intre 1 si 10^15.")
return False
return True
def sum_square(n):
ok = False
for i in range(1, int(math.sqrt(n // 2)) + 1):
x = i * i
y = n - x
j = int(math.sqrt(y))
if j * j == y and not ok:
print(min(y, x), max(x, y))
ok = True
if not ok:
print("NU")
if __name__ == '__main__':
n = int(input())
if validare_date(n):
print("Date de intrare valide")
sum_square(n)
else:
print("Date de intrare invalide")
</syntaxhighlight>