4190 - FPatrate: Diferență între versiuni

De la Universitas MediaWiki
Fără descriere a modificării
 
(Nu s-au afișat 4 versiuni intermediare efectuate de același utilizator)
Linia 10: Linia 10:


==Date de intrare==   
==Date de intrare==   
*'''n''': un număr natural între '''2 și 10^9''' inclusiv.
Se citește de la tastatură '''n''': un număr natural între '''2 și 10^9''' inclusiv.
 


==Date de ieșire==
==Date de ieșire==
*'''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'''.
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." și programul va afișa:
*'''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'''.
'''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==
==Exemplu==
 
===Exemplul 1===
Pentru '''n=400''', după apel, '''x=2''' şi '''y=10''', iar pentru '''n=16''' sau '''n=24''', după apel, '''x=0''' și '''y=0'''.
;Intrare
 
:400
;Ieșire
:2 10
===Exemplul 2===
;Intrare
:16
;Ieșire
:0 0
===Exemplul 3===
;Intrare
:24
;Ieșire
:0 0


==Important==
==Important==
Linia 48: Linia 60:
     n = int(input("Introduceți n: "))
     n = int(input("Introduceți n: "))
     if validare_n(n):
     if validare_n(n):
        print("Datele de intrare corespund restrictiilor impuse.")
         x, y = patrate(n)
         x, y = patrate(n)
         print(f"x = {x}, y = {y}")
         print(f"x = {x}, y = {y}")
     else:
     else:
         print("n nu este un număr natural între 2 și 10^9 inclusiv")
         print("Datele de intrare nu corespund restrictiilor impuse.")




Linia 57: Linia 70:


</syntaxhighlight>
</syntaxhighlight>
==Explicatii==
==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".
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".

Versiunea curentă din 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):
        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.")

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".