洛谷 P1349廣義斐波那契

2022-07-24 21:42:25 字數 1210 閱讀 7749

題意:現在定義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。矩陣乘法的時候記得要多mod一次。

**:

1 #include2 #include3 #include4

using

namespace

std;

5#define ll long long

6const

int maxn = 3;7

8ll n,mod;910

//矩陣結構體

11struct

matrix18}

19};

2021

//矩陣乘法

22matrix mul(matrix a, matrix b)31}

32}

33return

ans;34}

3536

//矩陣快速冪

37matrix qpow(matrix a,ll b)

46return

ans;47}

4849

void

print(matrix a)

54 cout <56}

5758

intmain()

65if(n == 2

)69 matrix base;70

matrix ans;

71 ans.a[1][1] = a2;ans.a[1][2] =a1;

7273

base.a[1][1] = p;base.a[1][2] = 1;74

base.a[2][1] = q;base.a[2][2] = 0;75

76 ans = mul(ans,qpow(base,n-2

));77

//print(ans);

78 cout<1][1]%mod<79return0;

80 }

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整數範圍...

洛谷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在長整數範圍內。輸出包含...

洛谷1349 廣義斐波那契數列 矩陣乘法

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