POJ Fibonacii (矩阵快速幂)
来源:互联网 发布:mac 图像处理软件 编辑:程序博客网 时间:2024/06/05 13:42
点击打开链接
这道题矩阵base^n 所得新的矩阵的右上角的值就是斐波那契数列第n项的值,但由于数比较大,所以要一直取模。
这道题的程序可以当作模板使用,其中矩阵是用结构体封装的,可以使代码更加简洁。
#include<cstdio>#include<iostream>#include<cstring>using namespace std;struct matrix{int a[2][2];}ans,base;const int MOD = 1e4;matrix multiply(matrix x, matrix y){ matrix tmp; for (int i = 0; i < 2; i++) for (int j = 0; j < 2; j++) { tmp.a[i][j] = 0; for (int k = 0; k < 2; k++) tmp.a[i][j] = (tmp.a[i][j] + x.a[i][k] * y.a[k][j]) % MOD; } return tmp;}int fast_mod(int n){ while (n) { if (n & 1) ans = multiply(ans, base); base = multiply(base, base); n >>= 1; } return ans.a[0][1];}int main(){ int n; while (scanf("%d", &n) && n != -1) { ans.a[0][0] = 1; ans.a[0][1] = 0; ans.a[1][0] = 0; ans.a[1][1] = 1; // 初始化ans为单位矩阵,单位矩阵乘以任何矩阵等于那个矩阵本身 base.a[0][0] = 1; base.a[0][1] = 1; base.a[1][0] = 1; base.a[1][1] = 0; printf("%d\n", fast_mod(n)); } return 0;}
0 0
- POJ Fibonacii (矩阵快速幂)
- 算法-骨牌覆盖问题(矩阵快速幂求Fibonacii)
- poj 3070 Fibonacii(矩阵乘法求Fibonacii)
- poj 3070(矩阵的快速幂)
- poj - 3070 - Fibonacci(矩阵快速幂)
- poj 3070 Fibonacci(矩阵快速幂)
- poj 3070 Fibonacci(矩阵快速幂)
- POJ 3070 Fibonacci(矩阵快速幂)
- poj 3070(矩阵快速幂)
- 【POJ】3070Fibonacci(矩阵快速幂)
- POJ 3070 Fibonacci(矩阵快速幂)
- POJ 3070 Fibonacci(矩阵快速幂)
- POJ 3070(矩阵快速幂)
- poj 3070(矩阵快速幂)
- poj 3233(矩阵快速幂+二分)
- 【POJ 3070】Fibonacci(矩阵快速幂)
- POJ 3070 Fibonacci(矩阵快速幂)
- 【POJ 3070】Fibonacci(矩阵快速幂)
- 矩阵运算的重新理解
- 无人值守安装linux
- 2.1 UIAlertView,UIActionSheet,UIDatePicker,UIPickerView使用的简单总结
- 亲手造的一个轮子--jiptux
- 深度学习之theano学习的一些网址
- POJ Fibonacii (矩阵快速幂)
- 如何在tomcat里为多个应用配置不同的访问端口
- Plugin is too old,please update to a more recent version,or set ANDROID_DAILY_OVERRIDE environment v
- ADT Bundle 理解开发环境 & Eclipse工具使用技巧
- Java 阻塞的概念
- Spring jdbcTemplate
- OMAP3 DSS 初始化过程(2)总线关系
- WC2016游记
- codeforce 621B Wet Shark and Bishops