計算乘法很簡單,但是如果資料規模過大就會超時了,所以就有了快速冪這個演算法。
原理:如果b是奇數,就有a^b=a * a^(b-1)
如果b是偶數,就有ab=a(b/2) *a^(b/2)
舉個例子 2^4
2^4 = 2^2 * 2^2
2^2 = 2^1 * 2^1
2^1 = 2 = 2^0
2^0 = 1
(例子借鑑了演算法筆記)
時間複雜度o(logn)
題目給出三個整數a,b,ma,b,ma,b,m,求ab%ma^b % mab%m的值
輸入三個整數a,b,ma,b,ma,b,m。
輸出乙個整數,表示ab%ma^b %mab%m的值。
【資料規模】
a,b,m≤109a,b,m≤10^9a,b,m≤109。
**:
#include
//萬能標頭檔案
using
namespace std;
typedef
long
long ll;
//巨集定義
ll q_pow
(ll x,ll n,ll m)
intmain()
線性結構的C實現之鍊錶(面向新手,大佬勿噴)
對於線性結構還有一種實現模式,就是鍊錶,相比於陣列,鍊錶的優勢在於,他理論上沒有最大的規模,不像陣列需要規定乙個明確的最大值。而且插入刪除操作相比於陣列來講比較容易,但是實現起來比較花裡胡哨,需要一段時間去訓練,實現原理還是很簡單的。注意 鍊錶的操作建議同學畫圖理解。我們是這樣建立鍊錶的,首先是建立...
新手上手vue 第乙個Hello(大佬勿噴)
哈哈,今天分享下,我的第乙個vue專案。首先當我們搭建好環境 nodejs什麼的 程式設計工具也配置好,我是用vscode。當我們建立好vue專案後就有會出現這幾個資料夾。一般打包vue的話也就大概打包這幾個,不過node modules這個太大不建議打包。一般都是在其他資料夾拉好後,直接在終端 n...
排序演算法 快排 (我小白 勿噴)
排序演算法中,桶排o n 的時間複雜度算很快的了,但是當資料很大的時候,空間複雜度很大。那麼我們熟悉的冒泡呢?時間複雜度最壞的情況o n 2 空間複雜度才o 1 刷題時排序資料是 10 5 的時候你就會t了 所以這個時候 qsort 就出來了。假設 我們現在有 一組資料 6 1 2 7 9 3 4 ...