矩陣快速冪
---!x^n+y^n=z^n
定義矩陣a(m*n),b(p*q),a*b有意義當且僅當n=p。即a的列數等於b的行數。
且c=a*b,c(m*q)。
例如:進入正題,由於現在全國卷高考不考矩陣,也沒多大了解。因為遇到了斐波那契這題...
注意到: fn+1=fn+fn-1
我們會有:
則:
所以我們只需要想辦法求矩陣a的冪,這時候我們當然想要用快速冪。
**部分:
定義矩陣:
struct(模擬整數的快速冪)預處理:matrix;
[我們需要一類似於1的矩陣:]
『1 0 0
0 1 0
0 0 1』類似這種操作...
void矩陣乘法:[就該題而言]init()
matrix mul(matrix p,matrix q)快速冪:
void全部的**:(lowbee的難免會差一些,請大佬們見諒...)mfpow(ll p)
}
1 #include2 #include3 #include4using
namespace
std;
5 typedef long
long
ll ;
6inline ll read();
7const ll mod = 1e9 + 7;8
struct
matrix;
11 matrix res,base;12
ll ans;
13 ll c[3
];14
ll n;
15namespace
lys25
matrix mul(matrix p,matrix q)
35void
mfpow(ll p) 42}
43int
main()54}
55int
main()
59inline ll read()
67while(c>='
0'&&c<='9'
)71return k*f;
72 }
斐波那契數列第n項
1 斐波那契數列第n項 在斐波那契數列中,fib0 0,fib1 1,fibn fibn 1 fibn 2 n 1 給定整數n,求fibn mod10000。輸入格式 輸入包含多組測試用例。每個測試用例佔一行,包含乙個整數n。當輸入用例n 1時,表示輸入終止,且該用例無需處理。輸出格式 每個測試用例...
1242 斐波那契數列的第N項 矩陣快速冪)
1242 斐波那契數列的第n項 斐波那契數列的定義如下 f 0 0 f 1 1 f n f n 1 f n 2 n 2 1,1,2,3,5,8,13,21,34,55,89,144,233,377,給出n,求f n 由於結果很大,輸出f n 1000000009的結果即可。input 輸入1個數n ...
1242 斐波那契數列的第N項 (矩陣快速冪模板)
1242 斐波那契數列的第n項 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 收藏關注 斐波那契數列的定義如下 f 0 0 f 1 1 f n f n 1 f n 2 n 2 1,1,2,3,5,8,13,21,34,55,89,144,233,377,給出n,求f n...