2712 - Semne: Difference between revisions
Dragos1234 (talk | contribs) |
Dragos1234 (talk | contribs) |
||
(6 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Sursa: [https://www.pbinfo.ro/probleme/ | 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 == | ||
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. |
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>
- 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.