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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JZOJ 1240. Fibonacci sequence

發布時間:2025/3/15 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JZOJ 1240. Fibonacci sequence 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原題

題解

  • 對于80%的數據,根據遞推式用O(n)的方法就可以了。

  • 對于100%的數據,顯然要用到矩陣方法,這里介紹兩種思路。

  • F(n)S(n) 分別為 Fibonacci?sequence 的第n項和前n項和。

  • 求第x~y項的和相當于求 S(y)?S(x?1)。

  • 于是問題變成了怎么求 S(y)S(x?1)

    • S(n) 的通項,和 F(n) 的通項比較。

    • 可以發現 S(n)=F(n+2)?1,于是就用矩陣乘法求出數列的第 N+2 項。

    • 但這樣的方法在比賽中不可取,因為,

    • f(n)=55[(1+52)n?(1?52)n]

    • S(n)=55[(1+52)n+2?(1?52)n+2]?1

    • 顯然除非你的手算能力足夠強,否則這需要浪費大量時間才能推倒出來。

    • 當然,由于 S(n)=F(n+2)?1 規律還是優美的。

    • 善于觀察的同寫幾項出來就可以發現規律.

    • 根據 f(n)=f(n?1)+f(n?2)S(n)=S(n?1)+f(n)

    • 我們可以按如下方法構造一個矩陣。

    • [f(n)f(n?1)S(n)]=[f(n?1)f(n?2)S(n?1)]????110100111???

    • 這種方法比較直觀,對矩陣乘法比較熟悉的同學應該很容易想到.

Code

#include<cstdio> #include<cstring> using namespace std; int mid[2][2],s[2][2],c[2]; int mid1[2][2],mid2[2][2]; int ans1[2],ans2[2]; const int mo=10000; inline int read() {int data=0; char ch=0;while(ch<'0' || ch>'9') ch=getchar();while(ch>='0' && ch<='9') data=data*10+ch-'0',ch=getchar();return data; }//讀入優化 inline void ksm1(int v) {int ans[2][2];ans[0][0]=ans[1][1]=1;ans[1][0]=ans[0][1]=0;while(v){if(v%2){memset(s,0,sizeof(s));for(int i=0;i<2;i++)for(int j=0;j<2;j++)for(int k=0;k<2;k++)s[i][j]=(s[i][j]+ans[i][k]*mid1[k][j])%mo;memcpy(ans,s,sizeof(ans));}memset(s,0,sizeof(s));for(int i=0;i<2;i++)for(int j=0;j<2;j++)for(int k=0;k<2;k++)s[i][j]=(s[i][j]+mid1[i][k]*mid1[k][j])%mo;memcpy(mid1,s,sizeof(mid1));v/=2;}memcpy(mid1,ans,sizeof(mid1)); }//快速冪前x-1項 inline void ksm2(int v) {int ans[2][2];ans[0][0]=ans[1][1]=1;ans[1][0]=ans[0][1]=0;while(v){int s[2][2];if(v%2){memset(s,0,sizeof(s));for(int i=0;i<2;i++)for(int j=0;j<2;j++)for(int k=0;k<2;k++)s[i][j]=(s[i][j]+ans[i][k]*mid2[k][j])%mo;memcpy(ans,s,sizeof(ans));}memset(s,0,sizeof(s));for(int i=0;i<2;i++)for(int j=0;j<2;j++)for(int k=0;k<2;k++)s[i][j]=(s[i][j]+mid2[i][k]*mid2[k][j])%mo;memcpy(mid2,s,sizeof(mid2));v/=2;}memcpy(mid2,ans,sizeof(mid2)); }//快速冪前y項 int main() {mid[0][1]=mid[1][1]=mid[1][0]=1;int T=read();while(T--){int x=read(),y=read();ans1[0]=ans1[1]=ans2[0]=ans2[1]=1;memcpy(mid1,mid,sizeof(mid1));memcpy(mid2,mid,sizeof(mid2));ksm1(x-1);ksm2(y);memset(c,0,sizeof(c));for(int i=0;i<2;i++)for(int j=0;j<2;j++)c[i]=(c[i]+ans1[j]*mid1[i][j])%mo;memcpy(ans1,c,sizeof(ans1));memset(c,0,sizeof(c));for(int i=0;i<2;i++)for(int j=0;j<2;j++)c[i]=(c[i]+ans2[j]*mid2[i][j])%mo;//矩陣乘法memcpy(ans2,c,sizeof(ans2));printf("%d\n",(ans2[1]+mo-ans1[1])%mo);//相減得區間和}return 0; }

總結

以上是生活随笔為你收集整理的JZOJ 1240. Fibonacci sequence的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美精品小视频 | 蕾丝视频污| 四虎影视免费观看 | 热99| 亚洲精品国产精品乱码 | 中文亚洲字幕 | 四虎影院免费视频 | 99re在线精品视频 | 理论片中文字幕 | av超碰在线观看 | 久久国产网| 超碰国产在线观看 | 国内精品视频在线 | 成人午夜免费网站 | 国产黄色激情视频 | 久久成人精品视频 | 国产又粗又硬又黄的视频 | 伊人影院综合在线 | 欧美顶级黄色大片免费 | 91精品婷婷国产综合久久 | 欧美视频三区 | 午夜福利视频合集1000 | 91精品久久人妻一区二区夜夜夜 | 天堂中文字幕 | 日本中文字幕在线观看视频 | 日本免费在线视频观看 | 美女高潮黄又色高清视频免费 | 国产成人在线视频免费观看 | 在线观看视频色 | 热久久免费视频 | 成年人毛片视频 | 看一级黄色| 国产情侣免费视频 | 黑人3p波多野结衣在线观看 | 日韩少妇激情 | 三级亚洲| 亚洲欧洲免费视频 | 波多野结衣电车痴汉 | 日鲁鲁 | av最新版天堂资源在线 | 高清无码视频直接看 | 狠狠爱五月婷婷 | 色吧婷婷 | 白白色视频在线 | 亚洲经典自拍 | 国产精品久久一 | 激情伊人五月天 | 国产精品久久久久久精 | 欧美一区二区在线观看视频 | 97成人在线视频 | 日韩欧美亚洲在线 | 亚洲乱码一区 | 一级特黄性色生活片 | 国产亚洲精品久久久久丝瓜 | 麻豆激情网| www.sesehu | 尤物视频在线看 | 尹人久久| 91精品欧美 | 麻豆一区二区三区四区 | 污视频在线观看免费 | 国产激情一区二区三区四区 | 精品人妻一区二区免费 | 亚洲经典一区 | 欧美激情网 | 伊人网站在线观看 | 亚洲精品成人电影 | av久久久 | 国产精品久久久久久久久免费看 | 日本无遮羞调教打屁股网站 | 日本黄色高清视频 | 久久国产色 | 久热99| 国产日韩欧美综合在线 | 91色漫 | 麻豆成人精品国产免费 | 黄色资源在线观看 | 中文字幕在线视频不卡 | 亚洲国产中文在线 | 狠狠躁夜夜躁 | 日本黄网站在线观看 | 国产一区二区三区免费 | 黄色视屏在线 | 日韩精品三级 | 麻豆日产六区 | 免费在线看黄网址 | 日本三级在线 | 免费日批视频 | 青青久在线视频 | 九九视频免费在线观看 | 毛片入口 | 用舌头去添高潮无码视频 | 色一情一区二区三区四区 | 亚洲 欧美 日韩 综合 | 国产小视频在线免费观看 | 久久av无码精品人妻系列试探 | 操碰在线观看 | 波多野吉衣久久 | 日本h漫在线观看 |