Fibonacci數列(矩陣乘法快速冪)

2021-07-23 11:10:30 字數 1050 閱讀 6747

題目描述:

定義:f0=f1=1, fn=fn-1+fn-2(n>=2)。稱為fibonacci數列。

輸入n,求fn mod q。其中1<=q<=30000。

輸入描述:

第一行乙個數t(1<=t<=10000)。

以下t行,每行兩個數,n,q(n<=109, 1<=q<=30000)

輸出描述:

檔案包含t行,每行對應乙個答案。

樣例輸入:

3 6 2

7 3

7 11

樣例輸出:

1<=t<=10000

n<=109, 1<=q<=30000

思路:

f(n) 是第n項的值。

問題的求解就變成

#include

using namespace std;

int t,n,mod,ans[3][3],a[3][3];

void mul(int s1[3][3],int s2[3][3])

;for(int i=1;i<=2;i++)

for(int j=1;j<=2;j++)

for(int k=1;k<=2;k++)

tmp[i][j]=(tmp[i][j]+s1[i][k]*s2[k][j]%mod)%mod;

for(int i=1;i<=2;i++)

for(int j=1;j<=2;j++)

s1[i][j]=tmp[i][j];

}void quick_power(int n)

}int main()

}

Fibonacci 矩陣乘法入門

fibonacci 題意 求斐波那契的第n項,0 n 1e9 思路 設f n 2 為乙個1 2的矩陣,表示斐波那契的第n項和第n 1項,那麼求它的下一項就是乘乙個2 2的矩陣 然後就是矩陣快速冪做就好了 include include include include using namespace ...

Fibonacci數列的矩陣運算

fibonacci數列這一族的acm層出不窮,屢屢坑爹,每次好容易看出是它結果又死在o n 演算法上 下面貼出來的是fibonacci數列的o log n 的矩陣演算法 include typedef long long ll typedef struct valuepair valuepair,v...

fibonacci數列矩陣快速冪

對於矩陣 1 1 1 0 的n次冪,第一行第二個元素 右上角 的元素即為fibonacci數列的第n項,由此可以根據矩陣的乘法計算fibonacci數列的元素值 矩陣的快速冪利用的也是冪乘的二分法,只不是換成了矩陣的乘法,可以用函式處理。可以定義乙個二維陣列的結構體 typedef struct m...