python 快速冪演算法

2021-09-19 14:20:28 字數 703 閱讀 7781

計算a的b次方,需要考慮:

1、b==0 的話,返回1

2、b<0的情況,設定乙個flag,用於返回資料的時候進行判斷

3、b>0的情況:

打個比方:2^6=2*2*2*2*2*2=(2*2)*(2*2)*(2*2)=(2*2)^3=(2*2)*(2*2)^2=

# -*- coding:utf-8 -*-

class solution:

def power(self, base, exponent):

# write code here

flag=1

re=1

tmp=base

if exponent==0: #等於0的情況

return 1

if exponent<0: #小於0的時候,設定乙個flag,用於返回的時候做判斷

flag=0

exponent=abs(exponent)

while exponent>0: #大於0的情況

if exponent&1==1:

re=re*tmp #如果是奇數,奇數減一就是偶數

exponent>>=1 #右移動一位就是除以2

tmp=tmp*tmp #2^6=(2*2)^3

return re if flag else 1/re

演算法提高快速冪(快速冪演算法詳解)

問題描述 給定a,b,p,求 a b mod p。輸入格式 輸入共一行。第一行有三個數,n,m,p。輸出格式 輸出共一行,表示所求。樣例輸入 2 5 3 樣例輸出 資料規模和約定 共10組資料 對100 的資料,a,b為long long範圍內的非負整數,p為int內的非負整數。所謂的快速冪,實際上...

快速冪演算法

在 上一直沒有找到有關於快速冪演算法的乙個詳細的描述和解釋,這裡,我給出快速冪演算法的完整解釋,用的是c 語言,不同語言的讀者只好換個位啦,畢竟讀 c的人較多 所謂的快速冪,實際上是快速冪取模的縮寫,簡單的說,就是快速的求乙個冪式的模 餘 在程式設計過程中,經常要去求一些大數對於某個數的餘數,為了得...

快速冪演算法

模運算 公式 a b mod n a mod n b mod n mod n a b mod n a mod n b mod n mod n a b mod n a mod n b mod n mod n 要保證n是整數 要知道a mod n和b mod n都是比n小的 利用這些共識可以有效地防止溢...