Torna alle sfide
Facile 0 risolte 0% di accettazione

Sum of Multiples

Add values below a limit divisible by any supplied factor.

Cosa imparerai

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

Problema

Mostra traduzione

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.

Vincoli

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

Esempi

Esempio 1
Input:
limit = 12
factors = [3, 5]

Output atteso:
expected = 33
Input:
long long limit = 12;
std::vector<long long> factors = {3, 5};

Output atteso:
long long expected = 33;
Input:
long limit = 12;
long[] factors = new long[] {3, 5};

Output atteso:
long expected = 33;

Spiegazione

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

Esempio 2
Input:
limit = 10
factors = [2, 4]

Output atteso:
expected = 20
Input:
long long limit = 10;
std::vector<long long> factors = {2, 4};

Output atteso:
long long expected = 20;
Input:
long limit = 10;
long[] factors = new long[] {2, 4};

Output atteso:
long expected = 20;

Spiegazione

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

Come affrontarlo

Prova prima da solo, poi apri un suggerimento alla volta.

Suggerimento 1

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

Suggerimento 2

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

Suggerimento 3

Ignore zero factors and duplicates before doing any arithmetic.

Complessità attesa

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

Riferimenti

Questa sfida è adattata per CodeUtility. Segui la traccia e i vincoli sopra.

Impara dagli altri

Soluzioni della community

Nessuna soluzione pubblicata. Risolvi questa sfida per condividere la prima.