4190 - FPatrate: Diferență între versiuni
Linia 19: | Linia 19: | ||
==Exemplu== | ==Exemplu== | ||
===Exemplul 1=== | |||
;Intrare | |||
:400 | |||
;Ieșire | |||
:2 10 | |||
===Exemplul 2=== | |||
;Intrare | |||
:16 | |||
;Ieșire | |||
:0 0 | |||
===Exemplul 3=== | |||
;Intrare | |||
:24 | |||
;Ieșire | |||
:0 0 | |||
==Important== | ==Important== |
Versiunea de la data 6 mai 2023 17:24
Cerința
Subprogramul patrate are trei parametri:
- n, prin care primește un număr natural (n∈[2,109]);
- x și y, prin care furnizează câte un număr natural cu proprietatea că x2⋅y2=nși 2≤x<ysau valoarea 0, prin fiecare dintre aceștia, dacă nu există două astfel de numere. Dacă sunt mai multe astfel de valori, se furnizează cele corespunzătoare unei valori minime a lui x.
Scrieți definiția completă a subprogramului.
Date de intrare
Se citește de la tastatură n: un număr natural între 2 și 10^9 inclusiv.
Date de ieșire
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." și programul va afișa: x: un număr natural care să îndeplinească proprietatea că x^2 * y^2 = n și 2 ≤ x < y. Dacă nu există astfel de numere, x este 0. y': un număr natural care să îndeplinească proprietatea că x^2 * y^2 = n și 2 ≤ x < y. Dacă nu există astfel de numere, y este 0. Dacă există mai multe perechi (x, y) care să satisfacă condiția, se va returna perechea care are x minim. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse.".
Exemplu
Exemplul 1
- Intrare
- 400
- Ieșire
- 2 10
Exemplul 2
- Intrare
- 16
- Ieșire
- 0 0
Exemplul 3
- Intrare
- 24
- Ieșire
- 0 0
Important
Soluția propusă va conține definiția funcţiei cerute. 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.
Rezolvare
Rezolvare ver. 1
def validare_n(n):
if isinstance(n, int) and 2 <= n <= 10**9:
return True
return False
def patrate(n):
x = 0
y = 0
for i in range(2, int(n**0.5) + 1):
if n % (i**2) == 0:
if x == 0 or i < x:
x = i
y = n // (i**2)
return x, y
if __name__ == '__main__':
n = int(input("Introduceți n: "))
if validare_n(n):
x, y = patrate(n)
print(f"x = {x}, y = {y}")
else:
print("n nu este un număr natural între 2 și 10^9 inclusiv")
Explicatii
Acest cod definește mai întâi funcția de validare "validare_n", apoi subprogramul "patrate", care primește un număr natural n și returnează o pereche (x, y) care îndeplinește proprietatea dată sau (0, 0) în caz contrar. În final, în cadrul unui bloc "if name == 'main':", este preluată valoarea de intrare de la utilizator și apoi se apelează funcția "patrate".