這個其實是屬於數學問題,我們在用計算機計算an 的時候一般是將n個a直接相乘,複雜度是o(n)。但是一旦遇到n較大的時候很容易tle。故產生了快速冪演算法,其時間複雜度為log2(n)。
原理是基於以下這兩個公式:
(1).x是奇數
xn =(x2%mod)n/2%mod;
(2)x是偶數
xn =((x2%mod)n/2*x)%mod;
#include
using
namespace std;
typedef
long
long ll;
const ll mod =
1e9+7;
ll power
(ll x,ll n)
xx = xx * xx;
xx %
= mod;
}return sum;
}int
main()
return0;
}
快速冪 普通快速冪 矩陣快速冪
題意 n個人排隊,f表示女,m表示男,包含子串 fmf 和 fff 的序列為o佇列,否則為e佇列,有多少個序列為e佇列。分析 矩陣快速冪入門題。下面引用巨巨解釋 用f n 表示n個人滿足條件的結果,那麼如果最後乙個人是m的話,那麼前n 1個滿足條件即可,就是f n 1 如果最後乙個是f那麼這個還無法...
模板 普通快速冪(quick pow)
例題 p1226 模板 快速冪 取餘運算 在這裡,我選用的是函式的方式來做快速冪的模板,拿落谷的這道作為例題,有利於對快速冪的初步學習。快速冪顧名思義,就是快速算某個數的多少次冪。其時間複雜度為o logn 與樸素的o n 相比效率有了極大的提高。簡單來說,就是個二分求模的過程。已經有dalao講過...
快速冪(整數快速冪 矩陣快速冪)
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...