1016 - imparpar

From Bitnami MediaWiki
Revision as of 22:23, 2 January 2024 by Brianna Waltner (talk | contribs) (Pagină nouă: == 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 p...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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.