Recursos-LCC

Um arquivo de todo material que consegui reunir, pertinente ao curso de LCC da UM.

View on GitHub

LA2 | Treino 4 | Múltiplos


'''
Implemente uma função que determina quantas permutações dos n primeiros digitos 
são múltiplas de um dado número d. Por exemplo se n for 3 temos as seguintes 
permutações: 123, 132, 213, 231, 312, 321. Se neste caso d for 3 então todas 
as 6 permutações são múltiplas.
'''


# testa se o candidato c está completo
def complete(p,c):
    return len(c) == p

# enumera as extensões válidas para o candidato parcial c
def extensions(p,c):
    return [x for x in range(1, p+1) if x not in c]

# testa se um candidato c é uma solução válida para p
def valid(p,c,d):
    return int("".join(map(lambda i : str(i), c)))%d==0

def aux(p,c,d):
    if complete(p,c) and valid(p,c,d):
        return 1
    r = 0
    for x in extensions(p,c):
        c.append(x)
        r += aux(p,c,d)
        c.pop()
    return r
    
def multiplos(n,d):
    return aux(n,[],d)


Testes

# 1
n = 3
d = 3
> Resultado = 6

# 2
n = 5
d = 12
> Resultado = 24

retroceder