4190 - FPatrate: Difference between revisions
Cuceu Andrei (talk | contribs) Pagină nouă: ==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<y'''sau 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 compl... |
Vardai Erwin (talk | contribs) |
||
(5 intermediate revisions by 2 users not shown) | |||
Line 8: | Line 8: | ||
Scrieți definiția completă a subprogramului. | 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== | ==Important== | ||
Line 20: | Line 42: | ||
===Rezolvare ver. 1=== | ===Rezolvare ver. 1=== | ||
<syntaxhighlight lang="python" line="1" start="1"> | <syntaxhighlight lang="python" line="1" start="1"> | ||
def validare_n(n): | |||
if isinstance(n, int) and 2 <= n <= 10**9: | |||
return True | |||
return False | |||
def patrate(n): | def patrate(n): | ||
x = 0 | x = 0 | ||
y = 0 | y = 0 | ||
for i in range(2, int(n**0.5) + 1): | |||
for i in range(2, int(n ** 0.5) + 1): | if n % (i**2) == 0: | ||
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): | |||
print("Datele de intrare corespund restrictiilor impuse.") | |||
x, y = patrate(n) | |||
print(f"x = {x}, y = {y}") | |||
else: | else: | ||
print("Datele de intrare nu corespund restrictiilor impuse.") | |||
</syntaxhighlight> | |||
==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". |
Latest revision as of 17:24, 6 May 2023
Cerința[edit | edit source]
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[edit | edit source]
Se citește de la tastatură n: un număr natural între 2 și 10^9 inclusiv.
Date de ieșire[edit | edit source]
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[edit | edit source]
Exemplul 1[edit | edit source]
- Intrare
- 400
- Ieșire
- 2 10
Exemplul 2[edit | edit source]
- Intrare
- 16
- Ieșire
- 0 0
Exemplul 3[edit | edit source]
- Intrare
- 24
- Ieșire
- 0 0
Important[edit | edit source]
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[edit | edit source]
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line="1" start="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): print("Datele de intrare corespund restrictiilor impuse.") x, y = patrate(n) print(f"x = {x}, y = {y}") else: print("Datele de intrare nu corespund restrictiilor impuse.")
</syntaxhighlight>
Explicatii[edit | edit source]
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".