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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

蒜头君的兔子

發布時間:2024/9/21 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蒜头君的兔子 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

蒜頭君的兔子

?

蒜頭君的小伙伴在?第一年?送給他一對?一歲?的兔子,并告訴他:這種兔子?剛生下來時算?00?歲,到了?22?歲時就可以繁殖了,它在?2-102?10?歲時,每年會生下來一對兔子,這些兔子到了?22?歲也可以繁殖,但這些兔子在?1010?歲那年?生完仔后?不久就會死亡,蒜頭君想知道,第?nn?年兔子?產仔之后(第?nn?年?1010?歲的兔子此時已經死亡),他會有多少對兔子。結果對?10000000071000000007?取模。

輸入格式

共一行,一個正整數?nn,表示蒜頭君想知道第?nn?年的兔子總對數。

輸出格式

輸出一個整數,表示第?nn?年兔子總對數對?10000000071000000007?取模的值。

數據規模

對于?3030% 的數據,滿足?1 \le n \le 10^31n10?3??;

對于?6060% 的數據,滿足?1 \le n \le 10^51n10?5??;

對于?100100% 的數據,滿足?1 \le n \le 10^91n10?9??。

樣例輸入1

10

樣例輸出1

88

樣例輸入2

88

樣例輸出2

352138150

樣例輸入3

10086

樣例輸出3

405567313

題解

裸的矩陣快速冪,復雜度O(11^3logn);

?

#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> #define mod (1000000007) using namespace std; typedef long long lol; lol n,a[11][11]={{1,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0}}; lol b[11][11]={{0,1,0,0,0,0,0,0,0,0,0},{1,0,1,0,0,0,0,0,0,0,0},{1,0,0,1,0,0,0,0,0,0,0},{1,0,0,0,1,0,0,0,0,0,0},{1,0,0,0,0,1,0,0,0,0,0},{1,0,0,0,0,0,1,0,0,0,0},{1,0,0,0,0,0,0,1,0,0,0},{1,0,0,0,0,0,0,0,1,0,0},{1,0,0,0,0,0,0,0,0,1,0},{1,0,0,0,0,0,0,0,0,0,0},{1,0,0,0,0,0,0,0,0,0,0}}; lol ans; struct matrix {lol a[11][11];matrix(){for(lol i=0;i<=10;i++)for(lol j=0;j<=10;j++)a[i][j]=0;}matrix(lol b[11][11]){for(lol i=0;i<=10;i++)for(lol j=0;j<=10;j++)a[i][j]=b[i][j];}matrix operator*(matrix b){matrix ans;for(lol i=0;i<=10;i++)for(lol j=0;j<=10;j++)for(lol k=0;k<=10;k++)ans.a[i][j]=(ans.a[i][j]+(a[i][k]*b.a[k][j])%mod)%mod;return ans;} }S,T; int main() {S=matrix(a);T=matrix(b);scanf("%lld",&n);while(n){if(n&1)S=S*T;T=T*T;n>>=1;}for(lol i=0;i<=10;i++)ans=(ans+S.a[0][i])%mod;printf("%lld\n",ans);return 0; }

?

?

?

?

轉載于:https://www.cnblogs.com/huangdalaofighting/p/7259893.html

總結

以上是生活随笔為你收集整理的蒜头君的兔子的全部內容,希望文章能夠幫你解決所遇到的問題。

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