Todos os desafios
Médio 0 resolvidos 0% de aceitação

Contar Combinações de Moedas

Conte as formas de formar um valor usando moedas de denominações especificadas em quantidade ilimitada.

Use qualquer quantidade de cada denominação fornecida para formar exatamente o valor desejado. Conte combinações, não ordenações: dois arranjos que usam as mesmas quantidades de cada moeda contam como a mesma forma. As denominações são distintas e positivas.

Implemente coin_sums(amount, coins).

Entrada

amount: O valor total a ser formado.

coins: As denominações distintas disponíveis.

Saída

Retorne o número de combinações não ordenadas.

Restrições

0 ≤ amount ≤ 200. Existem de 0 a 10 denominações distintas, cada uma de 1 a 200. Todos os resultados cabem em um inteiro assinado de 64 bits. Para amount 0, existe uma forma: escolher nenhuma moeda.

Exemplos

Exemplo 1
Entrada:
coins = [1, 2]
amount = 4

Saída esperada:
expected = 3
Entrada:
std::vector<long long> coins = {1, 2};
long long amount = 4;

Saída esperada:
long long expected = 3;
Entrada:
long[] coins = new long[] {1, 2};
long amount = 4;

Saída esperada:
long expected = 3;

Explicação

As combinações são quatro moedas de 1, duas de 1 com uma de 2, e duas de 2.

Exemplo 2
Entrada:
coins = [2]
amount = 3

Saída esperada:
expected = 0
Entrada:
std::vector<long long> coins = {2};
long long amount = 3;

Saída esperada:
long long expected = 0;
Entrada:
long[] coins = new long[] {2};
long amount = 3;

Saída esperada:
long expected = 0;

Explicação

Qualquer soma de moedas de valor 2 é par, então 3 é impossível.

Referências

Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.

Aprenda com outros

Soluções da comunidade

Ainda não há soluções publicadas. Resolva este desafio para compartilhar a primeira.