POJ 3070 Fibonacci 用矩阵求费氏数列
2012-03-10 09:51
375 查看
题意:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202005/11/f32e059ed4c9bac3d898b6300bb2840f.gif)
题解:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202005/11/f32e059ed4c9bac3d898b6300bb2840f.gif)
题解:
#include <cstdio> #define SIZE (1<<10) #define MAX_SIZE 32 using namespace std; class CMatrix { public: int element[MAX_SIZE][MAX_SIZE]; void setSize(int); void setModulo(int); CMatrix operator* (CMatrix); CMatrix power(__int64); private: int size; int modulo; }; void CMatrix::setSize(int a) { for (int i=0; i<a; i++) for (int j=0; j<a; j++) element[i][j]=0; size = a; } void CMatrix::setModulo(int a) { modulo = a; } CMatrix CMatrix::operator* (CMatrix param) { CMatrix product; product.setSize(size); product.setModulo(modulo); for (int i=0; i<size; i++) for (int j=0; j<size; j++) for (int k=0; k<size; k++) { product.element[i][j]+=element[i][k]*param.element[k][j]; product.element[i][j]%=modulo; } return product; } CMatrix CMatrix::power( __int64 exp ) { CMatrix tmp = (*this) * (*this); if ( exp == 1 ) return *this; else if (exp & 1) return tmp.power(exp/2) * (*this); else return tmp.power( exp / 2 ); } int main() { __int64 n; while ( scanf("%I64d",&n) && n != -1 ) { if ( n == 0 ) { printf("0\n"); continue; } CMatrix obj, tmp; obj.setSize ( 2 ); obj.setModulo ( 10000 ); obj.element[0][0] = 1; obj.element[0][1] = 1; obj.element[1][0] = 1; obj.element[1][1] = 0; tmp = obj.power(n); printf("%d\n",tmp.element[0][1]); } return 0; }
相关文章推荐
- POJ-3070 Fibonacci 快速矩阵幂
- POJ 3070 Fibonacci.(矩阵快速幂)
- poj 3070 Fibonacci(矩阵快速幂,简单)
- poj 3070 Fibonacci (快速矩阵乘法)
- poj 3070 Fibonacci(矩阵快速幂)
- poj 3070 Fibonacci(矩阵乘法快速幂)
- POJ 3070 Fibonacci(矩阵快速幂)
- poj 3070 Fibonacci (矩阵快速幂求斐波那契数列的第n项)
- POJ3070——矩阵快速幂——Fibonacci
- POJ 3070 矩阵经典6 最基础的Fibonacci递推
- 【POJ 3070】Fibonacci(矩阵快速幂)
- poj 3070 Fibonacci(矩阵快速幂)
- 【POJ】3070 - Fibonacci(矩阵快速幂)
- POJ - 3070 - Fibonacci ( 矩阵快速幂 )
- POJ3070 - Fibonacci 矩阵快速幂
- [ACM] POJ 3070 Fibonacci (矩阵幂运算)
- poj3070 Fibonacci 矩阵快速幂
- POJ-3070 Fibonacci(矩阵快速幂求Fibonacci数列)
- poj 3070 Fibonacci(矩阵快速幂模板,斐波那契)
- POJ 3070 Fibonacci(矩阵快速幂)