Skip to content

Latest commit

 

History

History
 
 

970. Powerful Integers

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Given two non-negative integers x and y, an integer is powerful if it is equal to x^i + y^j for some integers i >= 0 and j >= 0.

Return a list of all powerful integers that have value less than or equal to bound.

You may return the answer in any order.  In your answer, each value should occur at most once.

 

Example 1:

Input: x = 2, y = 3, bound = 10
Output: [2,3,4,5,7,9,10]
Explanation: 
2 = 2^0 + 3^0
3 = 2^1 + 3^0
4 = 2^0 + 3^1
5 = 2^1 + 3^1
7 = 2^2 + 3^1
9 = 2^3 + 3^0
10 = 2^0 + 3^2

Example 2:

Input: x = 3, y = 5, bound = 15
Output: [2,4,6,8,10,14]

 

Note:

  • 1 <= x <= 100
  • 1 <= y <= 100
  • 0 <= bound <= 10^6

Related Topics:
Math

Solution 1.

// OJ: https://leetcode.com/problems/powerful-integers/
// Author: github.com/lzl124631x
// Time: O(log_x^bound * log_y^bound)
// Space: O(log_x^bound * log_y^bound)
class Solution {
public:
    vector<int> powerfulIntegers(int x, int y, int bound) {
        unordered_set<int> s;
        for (int a = 1; a + 1 <= bound; a = x == 1 ? bound : a * x) 
            for (int b = 1; a + b <= bound; b = y == 1 ? bound : b * y) 
                s.insert(a + b);
        return vector<int>(s.begin(), s.end());
    }
};