poj 3070 Fibonacci 矩阵快速幂
2016-04-11 11:16
288 查看
题目:http://poj.org/problem?id=3070
思路:就是矩阵快速幂的应用,没什么好说的,初学矩阵快速幂,第一题
思路:就是矩阵快速幂的应用,没什么好说的,初学矩阵快速幂,第一题
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int N = 2; const int mod = 10000; struct matrix { int arr ; matrix operator *(matrix a) /*重载*号,矩阵乘法*/ { matrix b; memset(b.arr, 0, sizeof b.arr); for(int i = 0; i < 2; i++) for(int j = 0; j < 2; j++) for(int k = 0; k < 2; k++) b.arr[i][j] = (b.arr[i][j] + arr[i][k] * a.arr[k][j]) % mod; return b; } }; matrix matrix_fast_pow(int n, matrix a) { matrix res; memset(res.arr, 0, sizeof res.arr); for(int i = 0; i < 2; i++) /*初始化为单位矩阵*/ res.arr[i][i] = 1; while(n) { if(n & 1) res = res * a; a = a * a; n >>= 1; } return res; } int main() { int n; while(scanf("%d", &n), n != -1) { matrix tmp; tmp.arr[0][0] = tmp.arr[0][1] = tmp.arr[1][0] = 1; tmp.arr[1][1] = 0; matrix res = matrix_fast_pow(n, tmp); printf("%d\n", res.arr[0][1] % mod); } }
相关文章推荐
- Web Api 中Get 和 Post 请求的多种情况分析
- javascript中的style只能取到在HTML中定义的css属性
- 干货|建议初创团队起初也要构建分布式应用
- Java 类 java的函数重载与修改对象的属性
- Android复习之AndroidMainfest属性详解
- VS2013MFC对话框工程学习笔记一 - 新建MFC对话框项目
- 【Launcher3】默认壁纸的设置
- MyEclipse中配置SVN插件
- Find local minima in an array
- 结对项目《四则运算》
- 解决“System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本。”
- oracle 数据库 迁移到mysql 简单高效工具使用
- JS中六种数据类型(二)——Null
- yum命令与使用
- 【原创】.NET之我见
- socket模型-异步事件选择模型的正常退出
- leetcode 307. Range Sum Query - Mutable
- 关于Xcode的Other Linker Flags
- stuuts2 action获得session
- dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算