na 斐波那契數列f f n

2021-08-08 16:53:04 字數 1480 閱讀 3108

題目描述:

給出t個n,求斐波那契數列的f(f(n)).(答案取模1e9+7)

資料範圍:

100%1<=n<=10100

資料好大,那麼這題一定有規律。

首先先要了解乙個關於斐波切數列的性質,即斐波那契數列 ( 取模 ) 的週期性。

解釋一下:就是斐波那契數列對於mod取模後構成的數列,具有週期性。

對於這道題,我們就可以利用斐波那契數列的這個性質。

f(f(n)),最後要對mod=1e9+7取模,我們先求一下菲波那切數列對於1e9+7的週期t1。

那麼ans=f(f(n))%mod=f(f(n)%t1)%mod

n<=10100,我們還需要把n的問題解決;

再利用斐波那契數列的週期性,求出f(n)%t1的週期t2

那麼ans=f(f(n%t2)%t1)%mod

問題就解決啦!

求週期的**:

#include

#include

#include

#include

#define ull unsigned long long

using

namespace

std;

long

long a,b,c,t=0,mod;

int main()

t-=2;

printf("%lld\n",t);//t就是f關於mod的週期

return

0;}

ac**

#include

#include

#include

#define mo1 1000000007

#define mo2 2000000016

#define mo3 329616

#define ll long long

using namespace std;

char nn[1000];

int t;

ll n;

ll a[3][3]=;

ll f[3][3],bak[3][3];

ll fast_pow(ll k,ll mod)

for(int i=1;i<=2;i++)

for(int j=1;j<=2;j++)

bak[i][j]=a[i][j],a[i][j]=0;

for(int i=1;i<=2;i++)

for(int j=1;j<=2;j++)

for(int l=1;l<=2;l++)

(a[i][j]+=bak[i][l]*bak[l][j]%mod)%=mod;

k/=2;

}return f[1][2];

}int main()

return

0;}

na 斐波那契數列f f n

題目描述 給出t個n,求斐波那契數列的f f n 答案取模1e9 7 資料範圍 100 1 n 10100 資料好大,那麼這題一定有規律。首先先要了解乙個關於斐波切數列的性質,即斐波那契數列 取模 的週期性。解釋一下 就是斐波那契數列對於mod取模後構成的數列,具有週期性。對於這道題,我們就可以利用...

斐波那契數列 斐波那契數列python實現

斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 21 34 在數學上,斐波納契數列以如下被以遞推的方法定義 f 1 ...

迴圈斐波那契數列 斐波那契數列應用

什麼是斐波那契數列 斐波那契數列指的是這樣乙個數列 1,1,2,3,5,8,13,21,34,55,89,144 這個數列從第3項開始,每一項都等於前兩項之和 台階問題 有一段樓梯有10級台階,規定每一步只能跨一級或兩級,要登上第10級台階有幾種不同的走法?這就是乙個斐波那契數列 登上第一級台階有一...