求第n个Fibonaccid的值 并取模

2019-04-13 15:25发布

1. 传统的方法  递推公式  f[n]=f[n-1]+f[n-2] n>2 2. 运用矩阵乘法求解
#include using namespace std; const int N=2; const int mod=10000007; struct M{ long long int m[N][N]; }; M A= //需要根据题目求的矩阵 { 1,1, 1,0 }; M B= //单位矩阵 { 1,0, 0,1 }; M fun(M a,M b) //矩阵乘法 { M c; for(int i=0;i>=1; p=fun(p,p); } return ans; } int main() { int n; while(~scanf("%d",&n)) { M ans=power(n-1); printf("%lld ",ans.m[0][0]); } return 0; }