Fácil 0 resolvidos 0% de aceitação

Sum of Multiples

Add values below a limit divisible by any supplied factor.

O que você vai aprender

  • Test a number against several factors
  • Avoid counting a value twice
  • Accumulate a total below a limit

Problema

Ver tradução

Consider positive integers strictly below limit. Include a value if it is divisible by at least one nonzero factor. Count each included value once even if several factors divide it. Ignore zero factors. Factors [3, 5] give the familiar multiples-of-3-or-5 task.

Implement sum_of_multiples(limit, factors).

Input

limit: The exclusive upper bound.

factors: The factors whose multiples are eligible.

Output

Return the sum of distinct eligible positive integers.

Restrições

0 ≤ limit ≤ 100,000. There may be 0 through 20 factors, each between 0 and 100,000. Duplicate factors are allowed.

Exemplos

Exemplo 1
Entrada:
limit = 12
factors = [3, 5]

Saída esperada:
expected = 33
Entrada:
long long limit = 12;
std::vector<long long> factors = {3, 5};

Saída esperada:
long long expected = 33;
Entrada:
long limit = 12;
long[] factors = new long[] {3, 5};

Saída esperada:
long expected = 33;

Explicação

The included values are 3, 5, 6, 9, and 10. Their sum is 33.

Exemplo 2
Entrada:
limit = 10
factors = [2, 4]

Saída esperada:
expected = 20
Entrada:
long long limit = 10;
std::vector<long long> factors = {2, 4};

Saída esperada:
long long expected = 20;
Entrada:
long limit = 10;
long[] factors = new long[] {2, 4};

Saída esperada:
long expected = 20;

Explicação

Include 2, 4, 6, and 8. Values 4 and 8 are counted once despite matching both factors.

Como abordar

Tente sozinho primeiro e depois abra uma dica de cada vez.

Dica 1

Only values divisible by at least one usable factor should contribute once.

Dica 2

Use inclusion-exclusion to combine overlapping factor multiples without double counting.

Dica 3

Ignore zero factors and duplicates before doing any arithmetic.

Complexidade esperada

O(2^m) time, O(1) extra space

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.