Python 中的强大整数
假设我们有两个正整数 x 和 y,如果一个整数等于 x^i + y^j(其中 i >= 0 且 j >= 0 为整数),则称该整数为强大整数。我们需要找到所有小于或等于 bound 的强大整数的列表。
因此,如果输入为 x = 2,y = 3,bound = 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,则
- 如果 bound >= 2,则
- 在 res 的末尾插入 2
- 否则,如果 x 等于 1,则
- 当 y^b + 1 <= bound 时,执行以下操作:
- 将 y^b + 1 插入 res 中
- b := b + 1
- 当 y^b + 1 <= bound 时,执行以下操作:
- 否则,如果 y 等于 1,则
- 当 x^a + 1 <= bound 时,执行以下操作:
- 将 x^a + 1 插入 res 中
- a := a + 1
- 当 x^a + 1 <= bound 时,执行以下操作:
- 否则,
- 当 x^a + 1 <= bound 时,执行以下操作:
- 如果 x^a + y^b <= bound,则
- b := b + 1
- 否则,
- a := a + 1
- b := 0
- 如果 x^a + y^b <= bound,则
- 当 x^a + 1 <= bound 时,执行以下操作:
- 如果 bound >= 2,则
让我们看看以下实现以获得更好的理解:
示例
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]
广告