leetcode970. Powerful Integers

Posted seyjs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode970. Powerful Integers相关的知识,希望对你有一定的参考价值。

题目如下:

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

解题思路:注意,题目中的^不是异或而是幂。方法很简单,如果x/y等于1,那么幂值只会是1;如果x/y 大于1,由于 bound <= 10^6,幂的最大值是20(pow(2,20) > 10^6)。

代码如下:

class Solution(object):
    def powerfulIntegers(self, x, y, bound):
        """
        :type x: int
        :type y: int
        :type bound: int
        :rtype: List[int]
        """
        res = set()
        x_max,y_max = 20 if x > 1 else 1,20 if y > 1 else 1
        for i in range(x_max):
            for j in range(y_max):
                v = pow(x,i) + pow(y,j)
                if v <= bound:
                    res.add(v)
        return list(res)

 

以上是关于leetcode970. Powerful Integers的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 970. Powerful Integers

LeetCode 970. Powerful Integers

leetcode970. Powerful Integers

LeetCode.970-强大的整数(Powerful Integers)

leetcode970

LeetCode Weekly Contest 118