又見斐波拉契(矩陣快速冪)

2021-09-25 21:23:24 字數 1273 閱讀 2283

傳送門:2023年湘潭大學程式設計競賽-g

這是乙個加強版的斐波那契數列。

給定遞推式

求f(n)的值,由於這個值可能太大,請對$10^9+7$取模。

第一行是乙個整數t(1 ≤ t ≤ 1000),表示樣例的個數。

以後每個樣例一行,是乙個整數$n(1 ≤ n ≤ 10^18)$。

每個樣例輸出一行,乙個整數,表示f(n) mod 1000000007。

123

4567

891011

1213

1415

1617

1819

2021

2223

2425

2627

2829

3031

3233

3435

3637

3839

4041

4243

4445

4647

4849

5051

5253

54

#include

using

namespace

std;

#define rep(i,a,n) for(int i=a;i

#define repd(i,a,n) for(int i=n-1;i>=a;i--)

#define crl(a,x) memset(a,x,sizeof(a))

typedef

long

long ll;

const ll mod= 1e9+7;

struct

matmat operator* (mat &a) const

};mat mat_qpow

(mat a,ll n)

return tem;

}ll m[6][6] = ,,,

,,};int

main

()//特判

ans=mat_qpow(a,n-1);

printf("%lld\n",(ans.data[0][0]+ans.data[0][2]*8%mod+ans.data[0][3]*4%mod+ans.data[0][4]*2%mod+ans.data[0][5])%mod);

}return0;}

湘潭校賽 又見斐波那契(矩陣快速冪)

思路 這題一看資料範圍就知道是個矩陣快速冪,通過構造矩陣知我們需要的轉移矩陣為下圖形式,不過需要特判1然後輸出的是n 1的結果哦,因為這個我本題wa了 矩陣快速冪最難得就是構造矩陣,當矩陣構造出來之後基本上就好做了 實現如下 include include typedef long long ll ...

牛客題 又見斐波那契 (矩陣快速冪)

題目鏈結 2018年湘潭大學程式設計競賽 又見斐波那契 給定遞推式 求f n 的值,由於這個值可能太大,請對109 7取模。因為資料範圍非常大 10的18次方 所以,一定存在o 1 或者o logn 的演算法的,而在 logn 中我們最可能用到的就是快速冪了,這個比較複雜一些,需要用到矩陣快速冪。那...

使用矩陣快速冪計算斐波拉契數列

一.題目 已知f n f n 1 f n 2 f 1 1,f 2 1,求給定n的f n 二.思路 常見的方法就是動態規劃,這樣時間的複雜度為o n 還有一種更快速的方法 矩陣的快速冪 給出的遞推式可以看做狀態轉移矩陣,可以表示為 那麼f n 和f 0 f 1 的關係可以表示為 如何暴力求解轉移矩陣的...