2915 - Sum Square

From Bitnami MediaWiki
Revision as of 16:08, 26 April 2023 by Paul Ungur (talk | contribs)

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>