【leetcode】970. Powerful Integers
题目如下:
Given two non-negative integers
x
andy
, an integer is powerful if it is equal tox^i + y^j
for some integersi >= 0
andj >= 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)