200_Fibonacci
来源:互联网 发布:js获取索引值 编辑:程序博客网 时间:2024/06/12 01:06
Fibonacci数列,使用矩阵来实现,计算A^n 使用递归,复杂度为O(logn)。
题源来自《挑战程序竞赛》第二版 200页
//// 200_Fibonacci.cpp// changlle//// Created by user on 1/28/16.// Copyright (c) 2016 user. All rights reserved.//#include <iostream>#include <vector>using namespace std;typedef vector<int> vec;typedef vector<vec> mat;typedef long long ll;const int M=10000;ll n;//计算A*Bmat mul (mat &A, mat &B){ mat C(A.size(), vec(B[0].size())); for (int i=0;i<A.size();i++) for (int k=0;k<B.size();k++) for (int j=0;j<B[0].size();j++) C[i][j]=(C[i][j]+A[i][k]*B[k][j])%M; return C; }//计算A^nmat pow(mat A,ll n){ mat B(A.size(),vec(A.size())); for (int i=0;i<A.size();i++) { B[i][i]=1; } while(n>0) { if (n &1) B=mul(B,A); A=mul(A,A); n>>=1;//向右移动一位,并且返回值给n; } return B;}void solve() { mat A(2,vec(2)); A[0][0]=1; A[0][1]=1; A[1][0]=1;A[1][1]=0; //注意矩阵的可读性 A=pow(A,n); cout<<A[1][0]<<endl; }int main() { n=4; solve();}
1 0
- 200_Fibonacci
- 1003_Fibonacci Sequence
- 蓝桥杯_Fibonacci数列 java
- 入门训练1_Fibonacci数列
- 蓝桥杯评测_fibonacci数列问题
- 【数据结构】斐波那契函数_Fibonacci
- 09_Fibonacci斐波那契数列
- 大话数据结构 code 第四章 04斐波那契函数_Fibonacci
- 200
- 创意200
- S7-200
- rqnoj-200
- 200AC
- 200/404
- ocp-200
- 101-200
- leetcode 200
- leetcode 200
- 【转】[STL]vector和deque的内存释放(clear)
- 归并排序
- ruby元编程2------method
- Java提高配(三七)—–Java集合细节(三):subList的缺陷
- Java 模板方法模式的实现
- 200_Fibonacci
- FTP 服务器(四)之实战搭建
- 清除缓存文件
- 颠倒32位数二进制位序
- java访问ttserver
- 队列的理解与实现[数据结构]
- C++:const和引用
- 在项目中记住Github用户名和密码的方法
- 2016依然坚挺