題目描述:
給出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級台階有幾種不同的走法?這就是乙個斐波那契數列 登上第一級台階有一...