kuangbin專題十九 CF450B 矩陣快速冪

2021-08-14 16:38:00 字數 728 閱讀 8295

題意:

給你公式:

f1 = x, f2 = y;

fi = f(i-1) + f(i+1);(其中i>=2)

題解:

好,我們來轉換公式變成f(i+1)=f(i)-f(i-1),然後i各減去1,得f(i)=f(i-1)-f(i-2),然後就可以推出矩陣的關係了:

f(i)=1*f(i-1)-1*f(i-2);

f(i-1)=1*f(i-1)-0*f(i-2);

得:

然後二階矩陣就可以通過矩陣快速冪算出n-2次之後的結果,a[0][0]*f2+a[0][1]*f1就可以過了。

#include

#include

#define ll long long int

const int mod=1000000007;

struct node

};node cla(node a,node b)

return c;

}ll pow(ll x,ll y,ll k)

printf("%lld\n",(((y

*c.m[0][0]+mod)%mod)+((x

*c.m[0][1]+mod)%mod))%mod);

} int main()

}

kuangbin帶你飛專題

kuangbin帶你飛 專題一 簡單搜尋 kuangbin帶你飛 專題二 搜尋高階 kuangbin帶你飛 專題三 dancing links kuangbin帶你飛 專題四 最短路練習 kuangbin帶你飛 專題五 並查集 kuangbin帶你飛 專題六 最小生成樹 kuangbin帶你飛 專題...

kuangbin專題一 簡單搜尋

poj 1426 找出乙個由1和0組成的十進位制數m滿足m為n的倍數。有兩種做法,一種是bfs從低位數往高位數搜,另一種是用二叉樹陣列的結構存每次的求出來的餘數,當餘數為0時返回下標,然後根據下標求出其對應的數。1.bfs include includeusing namespace std con...

kuangbin專題一簡單搜尋總結

e find the multiple 題意 找乙個能整除n的數m,對m的要求是只有0和1組成。n不超過200,m長度不超過100.思路 很多人都寫了乙個假演算法,就是在unsigned long long 的範圍裡面找就行了,雖然也a了,但博主想在這裡提一下正確的思路。首先用到了同餘定理 即以任意...