Luogu P1349 廣義斐波那契數列

2022-02-23 12:55:44 字數 768 閱讀 2898

既然廣義斐波那契,而且資料範圍這麼大,那麼我們使用矩陣快速冪來進行求解。大家都知道斐波那契的初始矩陣如下

$$\begin1&1\\1&0\end$$

那麼這道題我們怎麼推矩陣呢?先確定目標矩陣如下

$$\begin f_n & f_\end$$

然後推導過程如下:

$$f_n = p\times f_ + q\times f_

\\ \beginf_&f_\end\times \begin p&1\\q&0 \end=\begin(p\times f_+q\times f_)&f_\times 0\end=\begin f_n & f_\end$$

#include #include #include using namespace std;

typedef long long ll;

ll n, mod, p, q, a1, a2, ans;

struct matans, base;

inline void init()

inline mat mul(mat a, mat b)

} }return res;

}inline void qmat_pow(int p)

}int main()

if(n == 2)

init();

qmat_pow(n-2);

ans = ans.m[1][1];

ans %= mod;

printf("%lld", ans);

}

洛谷1349 廣義斐波那契數列

廣義的斐波那契數列是指形如an p an 1 q an 2的數列。今給定數列的兩係數p和q,以及數列的最前兩項a1和a2,另給出兩個整數n和m,試求數列的第n項an除以m的餘數。輸入包含一行6個整數。依次是p,q,a1,a2,n,m,其中在p,q,a1,a2整數範圍內,n和m在長整數範圍內。輸出包含...

P1349 廣義斐波那契數列

題目描述 廣義的斐波那契數列是指形如an p an 1 q an 2的數列。今給定數列的兩係數p和q,以及數列的最前兩項a1和a2,另給出兩個整數n和m,試求數列的第n項an除以m的餘數。輸入輸出格式 輸入格式 輸入包含一行6個整數。依次是p,q,a1,a2,n,m,其中在p,q,a1,a2整數範圍...

洛谷 P1349廣義斐波那契

題意 現在定義fib數列為 an p an 1 q an 2求第n項 m的答案。題解 begin p 1 q 0 end begin f n 1 f n 2 end begin p f n 1 q f n 2 f n 1 end begin f n f n 1 end 這題有個玄學mod。矩陣乘法的...