日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

斐波那契数列矩阵快速幂

發(fā)布時(shí)間:2025/3/18 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 斐波那契数列矩阵快速幂 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題意

  用矩陣乘法求fibonacci數(shù)列的第n項(xiàng)。

Solution

  矩乘入門題啊,題目把題解已經(jīng)說(shuō)的很清楚里= =。

  矩乘其實(shí)很簡(jiǎn)單,通過(guò)自己YY或者是搜索對(duì)于一個(gè)遞推公式求出它所對(duì)應(yīng)的矩陣,然后套個(gè)快速冪就可以迅速求解第n項(xiàng)。

1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<vector> 5 #include<queue> 6 #include<cstring> 7 #define mp make_pair 8 #define pb push_back 9 #define first fi 10 #define second se 11 #define pw(x) (1ll << (x)) 12 #define sz(x) ((int)(x).size()) 13 #define all(x) (x).begin(),(x).end() 14 #define rep(i,l,r) for(int i=(l);i<(r);i++) 15 #define per(i,r,l) for(int i=(r);i>=(l);i--) 16 #define FOR(i,l,r) for(int i=(l);i<=(r);i++) 17 #define eps 1e-9 18 #define PIE acos(-1) 19 #define cl(a,b) memset(a,b,sizeof(a)) 20 #define fastio ios::sync_with_stdio(false);cin.tie(0); 21 #define lson l , mid , ls 22 #define rson mid + 1 , r , rs 23 #define ls (rt<<1) 24 #define rs (ls|1) 25 #define INF 0x3f3f3f3f 26 #define LINF 0x3f3f3f3f3f3f3f3f 27 #define freopen freopen("in.txt","r",stdin); 28 #define cfin ifstream cin("in.txt"); 29 #define lowbit(x) (x&(-x)) 30 #define sqr(a) a*a 31 #define ll long long 32 #define ull unsigned long long 33 #define vi vector<int> 34 #define pii pair<int, int> 35 #define dd(x) cout << #x << " = " << (x) << ", " 36 #define de(x) cout << #x << " = " << (x) << "\n" 37 #define endl "\n" 38 using namespace std; 39 //********************************** 40 const int mod=1e4; 41 typedef vector<vi> mat; 42 //********************************** 43 mat mul(mat& a,mat& b) 44 { 45 mat c(2,vi(2)); 46 rep(i,0,2)rep(j,0,2)rep(k,0,2) 47 c[i][j]+=(a[i][k]*b[k][j]),c[i][j]%=mod; 48 return c; 49 } 50 mat qpow(mat a,int b) 51 { 52 mat c(2,vi(2)); 53 c[0][0]=c[1][1]=1;c[1][0]=c[0][1]=0; 54 while(b){ 55 if(b&1)c=mul(c,a); 56 a=mul(a,a); 57 b>>=1; 58 } 59 return c; 60 } 61 //********************************** 62 int main() 63 { 64 int n; 65 while(cin>>n,~n){ 66 mat v(2,vi(2));v[0][0]=1;v[0][1]=1;v[1][0]=1;v[1][1]=0; 67 v=qpow(v,n); 68 cout<<v[1][0]<<endl; 69 } 70 return 0; 71 } View Code

?

轉(zhuǎn)載于:https://www.cnblogs.com/klaycf/p/9682980.html

總結(jié)

以上是生活随笔為你收集整理的斐波那契数列矩阵快速幂的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。