Python寫簡單的整數快速冪和矩陣快速冪

2021-10-04 12:58:25 字數 1302 閱讀 8828

經常會遇到求冪,按照常規操作,就會超時,現在寫兩個簡單的整數快速冪和矩陣快速冪供自己以後參考。

整數快速冪:

def

quickpow

(a,n)

: res =

1while

(n):

if n%2!=

0:res *= a

a *= a #翻倍

n >>=1

#二進位制右移一位

return res

a,n =

map(

int,

input()

.split())

print

(quickpow(a,n)

)

矩陣快速冪:
#以2x2矩陣相乘為例

m =[[1

for i in

range(2

)]for j in

range(2

)]m[1

][1]

=0n =int

(input()

)def

mulmatrix

(x,y)

:#定義二階矩陣相乘的函式

ans =[[

0for i in

range(2

)]for j in

range(2

)]for i in

range(2

):for j in

range(2

):for k in

range(2

):ans[i]

[j]+= x[i]

[k]* y[k]

[j]return ans

defquickmatrix

(m,n)

: e =[[

0for i in

range(2

)]for j in

range(2

)]#先定義乙個單位矩陣

for i in

range(2

):e[i]

[i]=

1while

(n):

if n %2!=

0:e = mulmatrix(e,m)

m = mulmatrix(m,m)

n >>=1

return e

print

(quickmatrix(m,n)

)

矩陣快速冪思想和整數快速冪一樣,只不過要多定義乙個矩陣乘法的例子,我的**裡面給的比較簡單,可以參考個思路

快速冪(整數快速冪 矩陣快速冪)

1 整數快速冪 例如求x 8 就是x x x x x x x x 正常的運算方式是,x的值乙個個往上乘上去,乘法運算執行7次 x x x x x x x x 也可以採用這種運算方式,先進行乘法得到x 2再對x 2進行三次乘法。這種運算要明顯比第一種情況要快 所以對於整數快速冪,也是結合了這種思想 x...

快速冪計算(整數快速冪 矩陣快速冪)

快速冪計算 樸素演算法實現 1 ll get pow ll x,ll n 這裡的n要求不小於0,如果n小於0則令n n,並且最終返回1.0 ans即可 29 return ans 10 快速冪演算法 原理 二分 假設我們現在要計算pow x,n 那麼有當n為偶數時pow x,n pow x x,n ...

整數的冪運算 快速冪

題目描述 給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。一開始最簡單的思路是,用乙個while迴圈直接乘出結果,太簡單 就不貼了,複雜度是o n 發現有更快的演算法,叫快速冪,複雜度為o lgn public class solutio...