假设我们有两个正整数x和y,我们可以说一个整数对于i> = 0和j> = 0的某些整数等于x ^ i + y ^ j是强大的。我们必须找到一个包含所有整数的列表-值小于或等于bound的强大整数。
因此,如果输入像x = 2且y = 3且边界为10,则输出将为[2,3,4,5,7,9,10],因为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
为了解决这个问题,我们将遵循以下步骤-
将a,b初始化为0
res:=一个新列表
如果x与1相同且y与1相同,则
当x ^ a + 1 <= bound时
a:= a + 1
b:= 0
b:= b + 1
如果x ^ a + y ^ b <=绑定,则
除此以外,
当x ^ a + 1 <=界时
将x ^ a +1插入res
a:= a + 1
而y ^ b + 1 <=界
将y ^ b +1插入res
b:= b + 1
在res末尾插入2
如果绑定> = 2,则
否则,当x与1相同时,则
否则,当y与1相同时,则
除此以外,
让我们看下面的实现以更好地理解-
class Solution: def powerfulIntegers(self, x, y, bound): a,b=0,0 res=[] if x==1 and y==1: if bound>=2: res.append(2) elif x==1: while y**b+1<=bound: res.append(y**b+1) b+=1 elif y==1: while x**a+1<=bound: res.append(x**a+1) a+=1 else: while x**a+1<=bound: if x**a+y**b<=bound: res.append(x**a+y**b) b+=1 else: a+=1 b=0 return list(set(res)) ob = Solution()print(ob.powerfulIntegers(2,3,10))
2,3,10
输出结果
[2, 3, 4, 5, 7, 9, 10]