Crie funções para calcular:
Arranjo A(n, p)

Passo 1

O enunciado pede para a gente criar uma função que calcule o arranjo simples A(n,p), que é um tópico de combinação e permutação dentro de combinatória. Vamos precisar usar a definição matemática de arranjo e implementar, em seguida, funções em Python.

Passo 2

Na teoria, o arranjo simples é definido como
A(n, p) = n!(n - p)!
onde n! é o fatorial de n e (n - p)! é o fatorial de n - p.
Para implementar isso em código, primeiro vamos criar uma função para calcular o fatorial de um número inteiro n. A ideia é multiplicar todos os inteiros de 1 até n. Assim garantimos que podemos reutilizar esse cálculo no arranjo.

Passo 3

Depois, usando a função de fatorial, criamos a função arranjo(n, p) que retorna n! / (n-p)!. É importante validar que 0 <= p <= n para não tentar calcular fatorial de número negativo.

Passo 4

Como otimização, podemos também implementar arranjo_direto(n, p) que calcula o arranjo multiplicando apenas os termos necessários de (n-p+1) até n, sem precisar calcular dois fatoriais completos.

Resposta

Funções em Python para calcular arranjo A(n, p)

def fatorial(n):
“”"
Calcula o fatorial de n (n!).
n deve ser inteiro não-negativo.
“”"
if n < 0:
raise ValueError(“n deve ser >= 0”)
resultado = 1
for i in range(2, n+1):
resultado *= i
return resultado
def arranjo(n, p):
“”"
Calcula o arranjo simples A(n, p) usando fatoriais:
A(n,p) = n! / (n-p)! com 0 <= p <= n
“”"
if p < 0 or p > n:
raise ValueError(“p deve satisfazer 0 <= p <= n”)
return fatorial(n) // fatorial(n - p)
def arranjo_direto(n, p):
“”"
Calcula A(n,p) multiplicando diretamente de (n-p+1) até n,
sem computar dois fatoriais completos.
“”"
if p < 0 or p > n:
raise ValueError(“p deve satisfazer 0 <= p <= n”)
resultado = 1
for i in range(n - p + 1, n + 1):
resultado *= i
return resultado

Exemplo de uso:

>>> arranjo(5, 3) # deve dar 543 = 60

60

>>> arranjo_direto(5, 3)

60

Exercícios relacionados