python内置乘方运算溢出错误
在做leetcode 50.pow(x,n)时,遇到了一个小问题
在写快速幂的底数平方时,我最开始使用了内置的乘方运算符**
x**=2
但是在提交的时候报错
OverflowError: (34, 'Numerical result out of range')
x**=2
查阅资料发现**运算符不会自动处理溢出,而*会自动适应运算结果,处理溢出。
Python的整数乘法可以处理任意大小的整数。
所以换成了
x*=x
最后附上完整代码
class Solution:
def myPow(self, x: float, n: int) -> float:
def to_bin(x:int)->list[int]:
bin_list=[]
while x:
bin_list.append(x%2)
x>>=1
print(bin_list)
return bin_list
def quick_pow(x:float,n:int)->float:
bin_x=to_bin(n)
ans=1
for a in bin_x:
if a:
ans*=x
# x*=x
x**=2
return ans
if n>=0:
return quick_pow(x,n)
return 1.0/quick_pow(x,-n)
简单记录一下 2024/3/25

1606

被折叠的 条评论
为什么被折叠?



