假设我们有两个正整数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]