Easy 0 solved 0% acceptance

Sum of Multiples

Add values below a limit divisible by any supplied factor.

What you'll learn

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

Problem

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.

Constraints

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

Examples

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

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

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

Expected output:
long expected = 33;

Explanation

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

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

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

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

Expected output:
long expected = 20;

Explanation

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

How to approach it

Try on your own first, then open one hint at a time.

Hint 1

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

Hint 2

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

Hint 3

Ignore zero factors and duplicates before doing any arithmetic.

Expected complexity

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

References

This challenge is adapted for CodeUtility. Follow the statement and constraints above.

Learn from others

Community solutions

No published solutions yet. Solve this challenge to share the first one.