快速冪 快速乘

2021-10-04 04:10:04 字數 906 閱讀 8875

直接求解,需要迴圈b次。

思路:將b轉化為二進位制。對應為1的次數的冪保留,只需要將保留的冪的結果進行乘積就是a**b。

class

solution()

:def

fast

(self, a,b)

: b =

bin(b)[2

:]res =

1for i in b[::

-1]:

if i ==

'1':

res = res * a

a *= a

return res

#include// 如果使用# include會直接匯入所有常用的標頭檔案,編譯時間長

using namespace std;

int main()

cout << res << endl;

return 0;

}

class

solution()

:def

fast

(self, a, b)

: res =

0 b =

bin(b)[2

:]for i in b[::

-1]:

if i ==

'1':

res += a

a *=

2return res

#includeusing namespace std;

typedef unsigned long long ull;

int main()

cout << res << endl;

return 0;

}

快速乘,快速冪

老是忘記還是寫下來記錄一下 快速乘,和快速冪都是防止爆int,或long long,如果爆longlong可以選擇兩者結合,或者使用 int128 上網搜了還是不懂 例題 include iostream using namespace std int main b b 2 a a a m cout...

快速冪 快速乘

快速冪等演算法都是基於二進位制優化的演算法,本文不做過多敘述,在此只是留下模板,並介紹 o 1 快速乘 int qpow int a,int b,int p define qword long long qword qmul qword a,qword b,qword p 利用 a b pmod p...

快速乘 快速冪(矩陣快速冪)

當mod乙個大數p的時候,還有進行乘法的時候可能會爆long long的時候,就用快速乘或者快速冪。參考 先上模板 快速乘 ll multi ll a,ll b,ll m return ans 快速冪 ll pow mod ll a,ll b,ll m return res 快速乘 快速冪 hdu題...