2712 - Semne: Difference between revisions

From Bitnami MediaWiki
Dragos1234 (talk | contribs)
Dragos1234 (talk | contribs)
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
Sursa: [https://www.pbinfo.ro/probleme/56/numarareperechi]
Sursa: [https://www.pbinfo.ro/probleme/2712/semne]
== Cerinţa ==
== Cerinţa ==
Fie un număr n natural nenul, determinați un număr k și o combinație de semne '''+''' sau '''-''' (mai exact o succesiune x1,x2,…,xk unde xi∈{−1,1}, astfel încat să aibă loc relația: '''n=x1⋅ 1^2+ x2 ⋅ 2^2 + … + xk ⋅ k^2'''. Să se afișeze o succesiune de k semne + sau - care să îndeplinească relația de mai sus.
Fie un număr n natural nenul, determinați un număr k și o combinație de semne '''+''' sau '''-''' (mai exact o succesiune x1,x2,…,xk unde xi∈{−1,1}, astfel încat să aibă loc relația: '''n=x1⋅ 1^2+ x2 ⋅ 2^2 + … + xk ⋅ k^2'''. Să se afișeze o succesiune de k semne + sau - care să îndeplinească relația de mai sus.
Line 10: Line 10:


== Restricţii şi precizări ==
== Restricţii şi precizări ==
* 1 ⩽ n ⩽ 100
* 1 ⩽ '''n''' ⩽ 100


== Exemplul 1 ==
== Exemplul 1 ==
Line 16: Line 16:
: 3
: 3
; Ieșire
; Ieșire
: Datele introduse corespund cerintelor
: -+--+
: -+--+
<br>
<br>
Line 23: Line 24:
: 2
: 2
; Ieșire
; Ieșire
: Datele introduse corespund cerintelor
: ---+
: ---+
<br>
<br>
Line 58: Line 60:


== Explicatie rezolvare ==
== Explicatie rezolvare ==
cest program afiseaza un model de tipar care consta intr-o serie de caractere '''+''' si '''-'''.
Acest program afiseaza un model de tipar care consta intr-o serie de caractere '''+''' si '''-'''.


Functia '''validate_n''' are rolul de a verifica daca numarul "n" introdus de utilizator este cuprins intre 1 si 100. Daca nu, functia afiseaza un mesaj de eroare si returneaza valoarea booleana "False". Daca numarul este valid, functia returneaza valoarea booleana "True".
Functia '''validate_n''' are rolul de a verifica daca numarul "n" introdus de utilizator este cuprins intre 1 si 100. Daca nu, functia afiseaza un mesaj de eroare si returneaza valoarea booleana "False". Daca numarul este valid, functia returneaza valoarea booleana "True".
Line 64: Line 66:
Functia '''print_pattern''' afiseaza modelul de tipar. Daca numarul '''n''' impartit la 4 are restul 1, functia afiseaza '''+'''. Daca restul este 2, functia afiseaza '''---+'''. Daca restul este 3, functia afiseaza '''-+--+'''. Apoi, functia afiseaza '''+--+''' de mai multe ori, in functie de valoarea lui '''n''', impartita la 4.
Functia '''print_pattern''' afiseaza modelul de tipar. Daca numarul '''n''' impartit la 4 are restul 1, functia afiseaza '''+'''. Daca restul este 2, functia afiseaza '''---+'''. Daca restul este 3, functia afiseaza '''-+--+'''. Apoi, functia afiseaza '''+--+''' de mai multe ori, in functie de valoarea lui '''n''', impartita la 4.


Daca functia "validate_n" returneaza valoarea "True", atunci programul va apela functia "print_pattern" si va afisa modelul de tipar pentru numarul "n" introdus de utilizator.
Daca functia '''validate_n''' returneaza valoarea "True", atunci programul va apela functia '''print_pattern''' si va afisa modelul de tipar pentru numarul '''n''' introdus de utilizator.

Latest revision as of 10:00, 29 April 2023

Sursa: [1]

Cerinţa[edit | edit source]

Fie un număr n natural nenul, determinați un număr k și o combinație de semne + sau - (mai exact o succesiune x1,x2,…,xk unde xi∈{−1,1}, astfel încat să aibă loc relația: n=x1⋅ 1^2+ x2 ⋅ 2^2 + … + xk ⋅ k^2. Să se afișeze o succesiune de k semne + sau - care să îndeplinească relația de mai sus.

Date de intrare[edit | edit source]

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

Date de ieșire[edit | edit source]

Programul va afișa pe ecran, mesajul "Datele introduse corespund cerințelor" și pe o linie nouă programul va afișa pe ecran o succesiune de k semne + sau - care să îndeplinească relația. În caz contrar programul va afișa pe o linie noua mesajul "Datele introduse nu corespund cerintelor."

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

  • 1 ⩽ n ⩽ 100

Exemplul 1[edit | edit source]

Intrare
3
Ieșire
Datele introduse corespund cerintelor
-+--+


Exemplul 2[edit | edit source]

Intrare
2
Ieșire
Datele introduse corespund cerintelor
---+


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. 2712

def validate_n(n):

   if n < 1 or n > 100:
       print("Datele introduse nu corespund cerintelor.")
       return False
   return True


def print_pattern(n):

   if n % 4 == 1:
       print("+", end="")
   elif n % 4 == 2:
       print("---+", end="")
   elif n % 4 == 3:
       print("-+--+", end="")
   for i in range(n // 4):
       print("+--+", end="")


if __name__ == '__main__':

   n = int(input("Introduceti un numar: "))
   if validate_n(n):
       print("Datele introduse corespund cerintelor.")
       print_pattern(n)


</syntaxhighlight>

Explicatie rezolvare[edit | edit source]

Acest program afiseaza un model de tipar care consta intr-o serie de caractere + si -.

Functia validate_n are rolul de a verifica daca numarul "n" introdus de utilizator este cuprins intre 1 si 100. Daca nu, functia afiseaza un mesaj de eroare si returneaza valoarea booleana "False". Daca numarul este valid, functia returneaza valoarea booleana "True".

Functia print_pattern afiseaza modelul de tipar. Daca numarul n impartit la 4 are restul 1, functia afiseaza +. Daca restul este 2, functia afiseaza ---+. Daca restul este 3, functia afiseaza -+--+. Apoi, functia afiseaza +--+ de mai multe ori, in functie de valoarea lui n, impartita la 4.

Daca functia validate_n returneaza valoarea "True", atunci programul va apela functia print_pattern si va afisa modelul de tipar pentru numarul n introdus de utilizator.