Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Bitnami MediaWiki
Search
Search
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
2975 - FRadical
Page
Discussion
English
Read
Edit
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Cerința== Definiți funcția '''void FRadical(int n, int &x, int &y)''' cu parametrii: *'''n''', prin care primește un număr natural din intervalul '''[1, 1.000.000.000]''' *'''x''' și '''y''' – două numere naturale care se determină, cu proprietatea că '''x2 * y = n''', iar '''x''' este maxim posibil ==Date de intrare== Se citește de la tastatură un număr natural '''n''' din intervalul '''[1, 1.000.000.000]'''. ==Date de ieșire== Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." Programul va afișa două numere naturale '''x''' și''' y '''care satisfac proprietatea dată de enunțul problemei, respectiv''' x^2 * y = n''', iar '''x''' este maxim posibil. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse.". ==Exemplu== ;Intrare :15000 ;Ieșire :Datele de intrare corespund restricțiilor impuse :x = 50, y = 6 ==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=== <syntaxhighlight lang="python" line="1" start="1"> import math def validate_input(n): if n < 1 or n > 1000000000: print("Numarul n trebuie sa fie intre 1 si 1.000.000.000.") return False return True def FRadical(n): x = int(math.sqrt(n)) while x >= 1: y = n // (x * x) if x * x * y == n: return x, y x -= 1 def validate_output(n, x, y): if x * x * y != n: return False if x * x * (y + 1) <= n: return False return True if __name__ == "__main__": n = int(input("Introduceti numarul n: ")) if validate_input(n): x, y = FRadical(n) if validate_output(n, x, y): print("Datele de intrare corespund restricțiilor impuse") print("Pentru n =", n, ", se obtine x =", x, ", y =", y) else: print("Datele de intrare nu corespund restricțiilor impuse") </syntaxhighlight> ==Explicații== Funcția validate_input primește un număr natural n și verifică dacă acesta se află în intervalul [1, 1.000.000.000]. Dacă nu se respectă această condiție, funcția afișează un mesaj de eroare și returnează False, altfel returnează True. Funcția FRadical primește un număr natural n și calculează două numere naturale x și y care satisfac proprietatea dată de enunțul problemei, respectiv x^2 * y = n, iar x este maxim posibil. Pentru a calcula valorile x și y, funcția parcurge valorile posibile ale lui x, începând cu valoarea radicalului lui n și coborând către 1. Pentru fiecare valoare a lui x, se calculează valoarea lui y și se verifică dacă condiția x^2 * y = n este îndeplinită. Dacă este îndeplinită, atunci funcția returnează valorile x și y. Funcția validate_output primește trei parametri: numărul natural n, și două numere naturale x și y, și verifică dacă valorile x și y satisfac condiția specificată în enunțul problemei, respectiv x^2 * y = n, iar x este maxim posibil. Dacă valorile sunt corecte, funcția returnează True, altfel returnează False. În funcția main, se citește numărul natural n de la tastatură, se validează valorile de intrare cu ajutorul funcției validate_input, se calculează valorile x și y cu ajutorul funcției FRadical, se validează valorile de ieșire cu ajutorul funcției validate_output, și se afișează rezultatul final. Dacă valorile de intrare sau de ieșire nu sunt corecte, se afișează un mesaj de eroare corespunzător.
Summary:
Please note that all contributions to Bitnami MediaWiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Bitnami MediaWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Toggle limited content width