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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

浅谈矩阵加速——以时间复杂度为O(log n)的算法实现裴波那契数列第n项及前n之和使用矩阵加速法的优化求法

發(fā)布時間:2024/1/8 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅谈矩阵加速——以时间复杂度为O(log n)的算法实现裴波那契数列第n项及前n之和使用矩阵加速法的优化求法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

首先請連矩陣乘法乘法都還沒有了解的同學(xué)簡單看一下這篇博客:

https://blog.csdn.net/weixin_44049566/article/details/88945949

首先直接暴力求使用O(n)的時間復(fù)雜度肯定是不行的,所以我們應(yīng)該使用更優(yōu)的時間復(fù)雜度。

?

設(shè)f(n)為裴波那契數(shù)列第n項(xiàng)。讓我們來構(gòu)造兩個矩陣:

和.

現(xiàn)在我們不妨將兩個矩陣相乘,化簡過后可以得到:,也就是.

如果再將得到的新矩陣乘以,便可以得到。

也就是我們想得到第n項(xiàng),就可以這么實(shí)現(xiàn):,也就是。

看到冪我們就可以想到快速冪,所以最后程序的時間復(fù)雜度便是O(log n)。

代碼

#include <cstdio> #include <cstring> #include <iostream> using namespace std;#define N 10 #define LL long longint n,mod;struct Matrix {LL n,m,c[N][N];Matrix() { memset(c,0,sizeof(c)); };void _read() {for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%lld",&c[i][j]);}Matrix operator * (const Matrix& a) {Matrix r;r.n=n;r.m=a.m;for(int i=1;i<=r.n;i++)for(int j=1;j<=r.m;j++)for(int k=1;k<=m;k++)r.c[i][j]= (r.c[i][j]+ (c[i][k] * a.c[k][j])%mod)%mod;return r;}void _print() {for(int i=1;i<=n;i++) {for(int j=1;j<=m;j++) {if(j!=1) cout<<" ";cout<<c[i][j];}if(i!=n) puts("");}}Matrix _power(int indexx) {Matrix tmp,sum;tmp._pre1();sum._pre1();while(indexx>0) {if(indexx&1) sum=sum*tmp;tmp=tmp*tmp;indexx/=2;}return sum;}void _pre1() {n=m=2;c[1][1]=0;c[1][2]=c[2][1]=c[2][2]=1;}void _pre2() {n=1,m=2;c[1][1]=c[1][2]=1;}}T,ans;int main() {cin>>n>>mod;ans._pre2();T._pre1();if(n<=2) { cout<<1; return 0; }T=T._power(n-3);ans=ans*T;cout<<ans.c[1][2]; }

那么前n項(xiàng)之和呢?

這里我們可以這么構(gòu)造兩個矩陣:(S(n)為前n項(xiàng)之和)

和將兩個矩陣相乘,剩下的留給讀者思考。

這里給出代碼:

#include <cstdio> #include <cstring> #include <iostream> using namespace std;#define N 10 #define LL long longint n,mod;struct Matrix {LL n,m,c[N][N];Matrix() { memset(c,0,sizeof(c)); };void _read() {for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%lld",&c[i][j]);}Matrix operator * (const Matrix& a) {Matrix r;r.n=n;r.m=a.m;for(int i=1;i<=r.n;i++)for(int j=1;j<=r.m;j++)for(int k=1;k<=m;k++)r.c[i][j]= (r.c[i][j]+ (c[i][k] * a.c[k][j])%mod)%mod;return r;}void _print() {for(int i=1;i<=n;i++) {for(int j=1;j<=m;j++) {if(j!=1) cout<<" ";cout<<c[i][j];}if(i!=n) puts("");}}Matrix _power(int indexx) {Matrix tmp,sum;tmp._pre1();sum._pre1();while(indexx>0) {if(indexx&1) sum=sum*tmp;tmp=tmp*tmp;indexx/=2;}return sum;}void _pre1() {n=m=3;c[3][2]=c[3][3]=c[2][3]=c[1][1]=c[2][1]=c[3][1]=1;}void _pre2() {n=1,m=3;c[1][1]=2;c[1][3]=c[1][2]=1;}}T,ans;int main() {cin>>n>>mod;if(n==2) return printf("%d",2%mod),0;if(n==1) return printf("%d",1%mod),0;ans._pre2();T._pre1();if(n<=2) { cout<<1; return 0; }T=T._power(n-3);ans=ans*T;cout<<ans.c[1][1]; }

?

總結(jié)

以上是生活随笔為你收集整理的浅谈矩阵加速——以时间复杂度为O(log n)的算法实现裴波那契数列第n项及前n之和使用矩阵加速法的优化求法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲熟妇无码一区二区三区导航 | 久久精品美女视频 | 国产a免费 | 揉我啊嗯~喷水了h视频 | 国产毛片在线视频 | 国产欧美在线视频 | 天天色影综合网 | 国产成人小视频在线观看 | 深夜国产视频 | 国产av无码专区亚洲av | 国产一级二级三级在线观看 | 青青草在线视频免费观看 | 国产一级免费片 | 欧美女同在线 | 99热在线观看免费精品 | 成人免费大片黄在线播放 | 黑人一级 | 日韩在线观看精品 | 免费激情av| 国产一区二区不卡在线 | 在线观看视频一区二区 | 国产成人综合在线视频 | 亚洲狼人综合 | 日韩干| 亚洲精品av中文字幕在线在线 | 国产女人呻吟高潮抽搐声 | 无人码人妻一区二区三区免费 | 亚洲操操操| 午夜精品久久久久久久99黑人 | 日韩第一页在线 | 九九热在线视频播放 | 日本伦理在线 | 91久色视频 | 国产免费无遮挡吸奶头视频 | 国产三级一区二区 | av网站久久 | 伊人天堂在线 | 精品视频网 | 亚洲蜜桃av一区二区 | 男女羞羞在线观看 | 19禁大尺度做爰无遮挡电影 | 日韩精品av一区二区三区 | 凸凹人妻人人澡人人添 | 美女被爆操网站 | 强行侵犯视频在线观看 | 亚洲第一视频 | 伊人视频在线观看 | 国产精品欧美激情在线 | 色黄网站| 日日碰狠狠躁久久躁蜜桃 | 加勒比精品 | 99热超碰在线 | 免费毛片一区二区三区久久久 | 青青伊人久久 | 亚洲av无码一区二区三区人妖 | 欧美射图 | 黄网站在线免费看 | 欧美成人dvd在线视频 | 日韩1区2区3区 | 香蕉黄视频 | 日韩欧美精品一区二区三区 | 青青草原国产在线 | 日本在线高清视频 | 在线视频播放大全 | 国产精品毛片一区二区在线看舒淇 | 国产裸体永久免费无遮挡 | 日韩在线观看第一页 | 亚洲乱乱 | 国产成人综合一区二区三区 | 日本性网站| www.youjizz国产 | 国产精品久久久久影院 | 男人操女人的网站 | 日本少妇全体裸体洗澡 | 淫语对白 | 手机在线中文字幕 | 成人免费网视频 | 淫视频在线观看 | 日美女逼逼| 久久免费看片 | 秋霞精品一区二区三区 | av簧片| 下面一进一出好爽视频 | www.天天综合 | 日本中文字幕观看 | 少妇一级淫免费播放 | 激情网久久 | 欧美一级淫片免费 | 四房婷婷 | 日韩欧美视频在线免费观看 | 干干干日日日 | eeuss日韩 | 老地方在线观看免费动漫 | 老司机av影院 | 亚洲黄a| 亚洲色域网 | 国产三级在线免费观看 | 瑟瑟视频在线免费观看 | 成年免费在线观看 |