2712 - Semne: Difference between revisions
Dragos1234 (talk | contribs) |
Dragos1234 (talk | contribs) |
||
(11 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. | ||
== Date de intrare == | == Date de intrare == | ||
Programul citește de la tastatură | Programul citește de la tastatură numărul '''n'''. | ||
== Date de ieșire == | == Date de ieșire == | ||
Programul va afișa pe ecran, | 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 == | == Restricţii şi precizări == | ||
* | * 1 ⩽ '''n''' ⩽ 100 | ||
== Exemplul 1 == | == Exemplul 1 == | ||
Line 17: | Line 16: | ||
: 3 | : 3 | ||
; Ieșire | ; Ieșire | ||
: Datele introduse corespund cerintelor | |||
: -+--+ | : -+--+ | ||
<br> | <br> | ||
Line 22: | Line 22: | ||
== Exemplul 2 == | == Exemplul 2 == | ||
; Intrare | ; Intrare | ||
: | : 2 | ||
; Ieșire | ; Ieșire | ||
: Datele introduse | : Datele introduse corespund cerintelor | ||
: ---+ | |||
<br> | <br> | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
# | #2712 | ||
def | def validate_n(n): | ||
if n < 1 or n > 100: | |||
print("Datele introduse nu corespund cerintelor.") | |||
return False | |||
return True | |||
def | def print_pattern(n): | ||
""" | if n % 4 == 1: | ||
print("+", end="") | |||
elif n % 4 == 2: | |||
print("---+", end="") | |||
elif n % 4 == 3: | |||
print("-+--+", end="") | |||
print(" | |||
for i in range(n // 4): | |||
print("+--+", end="") | |||
if __name__ == '__main__': | |||
n = int(input("Introduceti un numar: ")) | |||
if | if validate_n(n): | ||
print("Datele introduse corespund cerintelor.") | |||
print_pattern(n) | |||
</syntaxhighlight> | |||
== 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.