1892 - S Norocos: Difference between revisions

From Bitnami MediaWiki
Dragos1234 (talk | contribs)
Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/4273/prodpp] == Cerinţa == Se dă numărul natural nenul '''n'''. Să se determine produsul primelor '''n''' pătrate perfecte nenule. == Date de intrare == Programul citește de la tastatură numărul '''n'''. == Date de ieșire == Dacă datele introduse sunt corecte și respectă formatul așteptat, programul va afișa un mesaj pe ecran cu textul "Datele sunt introduse corect.", iar apoi va afișa în continuare, pe un rând nou, ele...
 
Dragos1234 (talk | contribs)
 
(17 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Sursa: [https://www.pbinfo.ro/probleme/4273/prodpp]
Sursa: [https://www.pbinfo.ro/probleme/1892/snorocos]
== Cerinţa ==
== Cerinţa ==
Se dă numărul natural nenul '''n'''. Să se determine produsul primelor '''n''' pătrate perfecte nenule.
Se dă un număr natural '''n'''. Dacă numărul este norocos afișați cele '''n''' numere consecutive care adunate dau pătratul acestuia.
 
== Date de intrare ==
== Date de intrare ==
Programul citește de la tastatură numărul '''n'''.
Programul citește de la tastatură numărul '''n'''.
== Date de ieșire ==  
== Date de ieșire ==  
Dacă datele introduse sunt corecte și respectă formatul așteptat, programul va afișa un mesaj pe ecran cu textul "Datele sunt introduse corect.", iar apoi va afișa în continuare, pe un rând nou, elementele vectorului y, separate prin exact un spațiu.
Daca '''n''' este norocos, programul va afișa pe ecran cele '''n''' numere consecutive care adunate dau '''n * n''', separate prin spații și mesajul "Datele introduse corespund cerintelor." În caz contrar, programul va afișa mesajele '''NU ESTE NOROCOS''' și "Datele introduse nu corespund cerintelor."


În cazul în care datele din fișierul de intrare nu respectă restricțiile impuse (de exemplu, nu este un număr întreg), programul va afișa pe ecran mesajul "Datele nu corespund restricțiilor impuse." și nu va continua cu restul execuției programului.
== Restricţii şi precizări ==
== Restricţii şi precizări ==
* 0 < '''n''' ⩽ 10
* 1 ⩽ '''n''' ⩽ 1000


== Exemplul 1 ==
== Exemplul 1 ==
; Intrare
; Intrare
: 4
: 7
; Ieșire
; Ieșire
: Datele corespund cerințelor.
: Datele introduse corespund cerintelor.
: 576
: 4 5 6 7 8 9 10
<br>
<br>


== Exemplul 2 ==
== Exemplul 2 ==
; Intrare
; Intrare
: 16
: 8
; Ieșire
: Datele introduse nu corespund cerințelor.
<br>
== Exemplul 3 ==
; Intrare
: 7
; Ieșire
; Ieșire
: Datele corespund cerințelor.
: Datele introduse corespund cerintelor.
: 25401600
: NU ESTE NOROCOS
<br>
<br>


== Rezolvare ==  
== Rezolvare ==  
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
#4273
#1892
def patrate_perfecte(n):
def validate_n(n):
     patrate = []
     if isinstance(n, int) and 1 <= n <= 1000:
    i = 1
         return True
    while len(patrate) < n:
    else:
         patrat = i * i
         return False
        patrate.append(patrat)
         i += 1
    return patrate




def calculeaza(numbers):
def print_sequence(n):
     product = 1
     if n % 2 == 1:
    for number in numbers:
         k = (n + 1) // 2
         product *= number
        while n > 0:
    return product
            print(k, end=' ')
 
            k += 1
 
            n -= 1
def validare_numar(n):
     else:
     if n < 1 or n > 10:
         print("NU ESTE NOROCOS")
         return False
    return True




if __name__ == '__main__':
if __name__ == '__main__':
     n = int(input("Introduceți numărul n: "))
     n = int(input("n: "))
     if not validare_numar(n):
     if not validate_n(n):
         print("Datele introduse nu corespund cerintelor.")
         print("Datele introduse nu corespund cerințelor.")
        exit()
     else:
     else:
        squares = patrate_perfecte(n)
        product = calculeaza(squares)
         print("Datele introduse corespund cerintelor.")
         print("Datele introduse corespund cerintelor.")
        print(product)


    print_sequence(n)


</syntaxhighlight>
</syntaxhighlight>
== Explicatie rezolvare ==
Acest program primește un număr întreg de la utilizator și îl validează folosind funcția `validate_n`. Funcția `validate_n` verifică dacă numărul este de tip întreg și se încadrează în intervalul cuprins între 1 și 1000. Dacă numărul este valid, se afișează un mesaj corespunzător și se continuă execuția programului. În caz contrar, se afișează un mesaj de eroare și programul se oprește.
Apoi, programul folosește funcția `print_sequence` pentru a afișa o secvență de numere. Dacă numărul introdus este impar, se calculează valoarea `k` ca fiind jumătatea numărului plus unu, iar apoi se afișează `n` numere consecutive începând cu `k`. Dacă numărul introdus este par, se afișează mesajul "NU ESTE NOROCOS".
În final, programul rulează în modul principal (`if __name__ == '__main__'`) unde solicită utilizatorului să introducă un număr și verifică validitatea acestuia folosind funcția `validate_n`. Dacă numărul nu este valid, se afișează un mesaj de eroare și programul se oprește. În caz contrar, se afișează un mesaj de confirmare și se afișează secvența de numere folosind funcția `print_sequence`.

Latest revision as of 21:35, 14 May 2023

Sursa: [1]

Cerinţa[edit | edit source]

Se dă un număr natural n. Dacă numărul este norocos afișați cele n numere consecutive care adunate dau pătratul acestuia.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n.

Date de ieșire[edit | edit source]

Daca n este norocos, programul va afișa pe ecran cele n numere consecutive care adunate dau n * n, separate prin spații și mesajul "Datele introduse corespund cerintelor." În caz contrar, programul va afișa mesajele NU ESTE NOROCOS și "Datele introduse nu corespund cerintelor."

Restricţii şi precizări[edit | edit source]

  • 1 ⩽ n ⩽ 1000

Exemplul 1[edit | edit source]

Intrare
7
Ieșire
Datele introduse corespund cerintelor.
4 5 6 7 8 9 10


Exemplul 2[edit | edit source]

Intrare
8
Ieșire
Datele introduse corespund cerintelor.
NU ESTE NOROCOS


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. 1892

def validate_n(n):

   if isinstance(n, int) and 1 <= n <= 1000:
       return True
   else:
       return False


def print_sequence(n):

   if n % 2 == 1:
       k = (n + 1) // 2
       while n > 0:
           print(k, end=' ')
           k += 1
           n -= 1
   else:
       print("NU ESTE NOROCOS")


if __name__ == '__main__':

   n = int(input("n: "))
   if not validate_n(n):
       print("Datele introduse nu corespund cerințelor.")
       exit()
   else:
       print("Datele introduse corespund cerintelor.")
   print_sequence(n)

</syntaxhighlight>

Explicatie rezolvare[edit | edit source]

Acest program primește un număr întreg de la utilizator și îl validează folosind funcția `validate_n`. Funcția `validate_n` verifică dacă numărul este de tip întreg și se încadrează în intervalul cuprins între 1 și 1000. Dacă numărul este valid, se afișează un mesaj corespunzător și se continuă execuția programului. În caz contrar, se afișează un mesaj de eroare și programul se oprește.

Apoi, programul folosește funcția `print_sequence` pentru a afișa o secvență de numere. Dacă numărul introdus este impar, se calculează valoarea `k` ca fiind jumătatea numărului plus unu, iar apoi se afișează `n` numere consecutive începând cu `k`. Dacă numărul introdus este par, se afișează mesajul "NU ESTE NOROCOS".

În final, programul rulează în modul principal (`if __name__ == '__main__'`) unde solicită utilizatorului să introducă un număr și verifică validitatea acestuia folosind funcția `validate_n`. Dacă numărul nu este valid, se afișează un mesaj de eroare și programul se oprește. În caz contrar, se afișează un mesaj de confirmare și se afișează secvența de numere folosind funcția `print_sequence`.