fibnacci数列模板
来源:互联网 发布:js 浮点数计算误差 编辑:程序博客网 时间:2024/06/09 16:22
#include <iostream>#include <cstring>using namespace std;const int MAX=10;#define __int64 long long#define Bit(n) 1<<n#define CLR(arr,val) memset(arr,val,sizeof(arr))class Matrix{public: Matrix(int r,int c):row(r),col(c){} void Init() { CLR(map,0); map[0][0]=map[0][1]=map[1][0]=1; } void Unit() //初始化为单位矩阵 { CLR(map,0); for(int i=0;i<row;i++) map[i][i]=1; } int Result() const { return map[0][1]%10000; } friend Matrix operator*(const Matrix& ,const Matrix&); int Pow(int);private: __int64 map[MAX][MAX]; int row,col; };Matrix operator*(const Matrix& M1,const Matrix& M2) //矩阵相乘模板{ Matrix M(M1.row,M2.col); //相乘之后矩阵的行和列会变化 for(int i=0;i<M1.row;i++) for(int j=0;j<M2.col;j++) { M.map[i][j]=0; for(int k=0;k<M1.col;k++) M.map[i][j]+=M1.map[i][k]*M2.map[k][j]; M.map[i][j]%=10000; } return M; }Matrix M(2,2);int Matrix::Pow(int n) //矩阵快速幂 { Matrix temp(2,2); temp.Init(); for(int i=0;Bit(i)<=n;i++) //利用二进制的思想求解 { if(Bit(i)&n) M=M*temp; temp=temp*temp; } return M.Result(); }int main(){ __int64 num; while(cin>>num,num!=-1) { M.Unit(); cout<<M.Pow(num)<<endl; } return 0;}
0 0
- fibnacci数列模板
- fibnacci数列
- fibnacci数列
- 递归实现 Fibnacci数列
- NYOJ - Fibnacci数列
- 输出fibnacci数列
- 递推-------fibnacci数列
- 12周fibnacci数列
- 关于Fibnacci数列
- 突然发现fibnacci数列数列
- 迭代求解fibnacci数列!
- 递归方法 求解fibnacci数列
- 迭代法——Fibnacci数列、
- 迭代法——Fibnacci数列
- C++ 第十三周任务-Fibnacci数列
- FIBNACCI数列中的第20个数
- fibnacci数列递归算法及改进
- 13周项目二Fibnacci数列
- [DP] 0-1 Knapsack Problem
- 项目管理九大知识领域
- Oracle 加索引、 查看sort_area_size、workarea_size_policy等
- Singleton设计模式
- 在服务器上的tomcat发布WEB项目供外网访问
- fibnacci数列模板
- 在一台主机上安装多个mysql服务
- 生成缩略图的PHP上传图片类
- 如何成为一个优秀的测试工程师
- jquery的each()详细介绍
- 兔子--提高Android SDK更新速度
- android 反编译和代码解读
- 项目管理笔记
- 帮朋友的朋友做的作业题额。。就当练习吧。。<assignment4>