題目描述:
定義: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...