1016 - imparpar

From Bitnami MediaWiki

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.