傳送門:2023年湘潭大學程式設計競賽-g
這是乙個加強版的斐波那契數列。
給定遞推式
求f(n)的值,由於這個值可能太大,請對$10^9+7$取模。
第一行是乙個整數t(1 ≤ t ≤ 1000),表示樣例的個數。以後每個樣例一行,是乙個整數$n(1 ≤ n ≤ 10^18)$。
每個樣例輸出一行,乙個整數,表示f(n) mod 1000000007。
1234567
891011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
3233
3435
3637
3839
4041
4243
4445
4647
4849
5051
5253
54
#includeusing
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 的關係可以表示為 如何暴力求解轉移矩陣的...