51nod-1358 浮波那契

51nod-1358 浮波那契_第1张图片

思路:矩阵快速幂,对于3.4可乘以5变成17,同时n*=5, FB(n)=FB(n-5)+FB(n-17), 而n<=20时 FB(n)=1。 关键是对于初始化矩阵的构造,即e[m][m]*FB[n-1,n-2,...,n-17]=FB[n,n-1,...,n-16]

e[][]=51nod-1358 浮波那契_第2张图片就可以满足条件

Code :

#include
#include
using namespace std;
typedef long long LL;

const int MOD=1e9+7;
const int MAX_S=20;
LL n,m;
LL e[MAX_S][MAX_S],sum[MAX_S][MAX_S];

LL Matrix_multiply(void);
void Mulrtiplt(LL a[][MAX_S],LL b[][MAX_S]);
int main()
{
	ios::sync_with_stdio(false);
	cin>>n;
	if(n<=4)	cout<<1<

 

你可能感兴趣的:(51Nod,矩阵快速幂)