Fácil 0 resueltos 0% de aceptación

Sum of Multiples

Add values below a limit divisible by any supplied factor.

Lo que aprenderás

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

Problema

Ver traducción

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.

Restricciones

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

Ejemplos

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

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

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

Salida esperada:
long expected = 33;

Explicación

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

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

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

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

Salida esperada:
long expected = 20;

Explicación

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

Cómo abordarlo

Inténtalo primero por tu cuenta y luego abre las pistas una a una.

Pista 1

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

Pista 2

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

Pista 3

Ignore zero factors and duplicates before doing any arithmetic.

Complejidad esperada

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

Referencias

Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.

Aprende de otros

Soluciones de la comunidad

Aún no hay soluciones publicadas. Resuelve este reto para compartir la primera.