1016 - imparpar
Cerinţa[edit | edit source]
Se dă n un număr natural. Să se afle în câte moduri putem aranja numerele de la 1 la n astfel încât numerele pare să fie situate pe poziții impare iar cele impare pe poziții pare ?
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul natural n.
Date de ieșire[edit | edit source]
Programul va afișa pe ecran numărul de moduri în care putem aranja numerele de la 1 la n astfel încât numerele pare să fie situate pe poziții impare iar cele impare pe poziții pare.
Restricţii şi precizări[edit | edit source]
- 1 ⩽ n ⩽ 20
Exemplul 1[edit | edit source]
- Intrare
4
- Iesire
Datele de intrare corespund restrictiilor impuse 4
Exemplu 2[edit | edit source]
- Intrare
25
- Iesire
Datele de intrare nu corespund restrictiilor impuse
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line> from math import factorial
def compute_arrangements(n):
even_positions = n // 2 odd_positions = n - even_positions
even_numbers = n // 2 odd_numbers = n - even_numbers
if even_positions < even_numbers or odd_positions < odd_numbers: return 0 else: return factorial(even_positions) * factorial(odd_positions)
def main():
n = int(input())
if n > 20: print("Datele de intrare nu corespund restrictiilor impuse") return
arrangements = compute_arrangements(n) print("Datele de intrare corespund restrictiilor impuse") print(arrangements)
if __name__ == "__main__":
main()
</syntaxhighlight>
Explicatie[edit | edit source]
Numerele de la 1 la 4 se pot aranja astfel : (2,1,4,3), (2,3,4,1), (4,1,2,3), (4,3,2,1) astfel încât numerele pare sunt pe poziții impare și numerele impare sunt pe poziții pare. Avem 4 moduri de aranjare.