1016 - imparpar
De la Universitas MediaWiki
Cerinţa
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
Programul citește de la tastatură numărul natural n.
Date de ieșire
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
- 1 ⩽ n ⩽ 20
Exemplul 1
- Intrare
4
- Iesire
Datele de intrare corespund restrictiilor impuse 4
Exemplu 2
- Intrare
25
- Iesire
Datele de intrare nu corespund restrictiilor impuse
Rezolvare
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()
Explicatie
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.