POJ 3070 Fibonacci(矩阵快速幂)
来源:互联网 发布:二炮研究院 软件中心 编辑:程序博客网 时间:2024/05/29 04:38
本题是一道矩阵快速幂的入门题,提示里面已经给出了矩阵的构造,所以直接快速幂求解即可
#include <iostream>#include <algorithm>#include <cstdio>#include <cmath>#include <cstring>#include <cstdlib>#include <string>#include <vector>#include <stack>#include <set>#include <map>using namespace std;const int MAXN = 2;const int mod = 10000;struct Matrix{ __int64 a[MAXN][MAXN]; int r;//行数 int c;//列数};void init(Matrix &mat, __int64 n){ for (int i = 0;i < mat.r;i++) { for (int j = 0;j < mat.c;j++) { mat.a[i][j] = n; } }}Matrix mul(Matrix mat1, Matrix mat2){ Matrix res; res.c = mat2.c; res.r = mat1.r; init(res, 0); for (int i = 0;i < mat1.r;i++) { for (int j = 0;j < mat2.c;j++) { for (int k = 0;k < mat1.c;k++) { res.a[i][j] += mat1.a[i][k] * mat2.a[k][j]; res.a[i][j] %= mod; } } } return res;}__int64 fmp(__int64 n){ Matrix ans; ans.c = 2; ans.r = 2; ans.a[0][0] = ans.a[0][1] = ans.a[1][0] = 1; ans.a[1][1] = 0; Matrix base = ans; while (n) { if (n & 1) ans = mul(ans, base); base = mul(base, base); n >>= 1; } return ans.a[1][1];}int main(){ __int64 n; while (cin >> n&&n!=-1) { cout << fmp(n) << endl; } return 0;}
0 0
- poj - 3070 - Fibonacci(矩阵快速幂)
- poj 3070 Fibonacci(矩阵快速幂)
- poj 3070 Fibonacci(矩阵快速幂)
- POJ 3070 Fibonacci(矩阵快速幂)
- 【POJ】3070Fibonacci(矩阵快速幂)
- POJ 3070 Fibonacci(矩阵快速幂)
- POJ 3070 Fibonacci(矩阵快速幂)
- 【POJ 3070】Fibonacci(矩阵快速幂)
- POJ 3070 Fibonacci(矩阵快速幂)
- 【POJ 3070】Fibonacci(矩阵快速幂)
- POJ - 3070 - Fibonacci (矩阵快速幂)
- POJ-3070Fibonacci(矩阵快速幂)
- 【POJ】3070 - Fibonacci(矩阵快速幂)
- POJ 3070 Fibonacci(矩阵快速幂)
- Poj 3070 Fibonacci (矩阵快速幂)
- [POJ 3070] Fibonacci (矩阵快速幂)
- poj 3070 Fibonacci(矩阵快速幂)
- POJ 3070 Fibonacci(矩阵快速幂)
- hibernate 拼sql防止注入的问题
- Thinkphp框架中的volist标签
- Mac中安装memcache
- 再谈CERL:详论Go与Erlang的并发编程模型差异
- Leetcode-Recover Binary Search Tree
- POJ 3070 Fibonacci(矩阵快速幂)
- OKHttpUtils
- MetaPost: 强大的图形语言
- 微信小程序开发入门基础
- view的两种滑动
- 等等等
- MySQL内存及虚拟内存优化设置
- 详解CorelDRAW中均匀填充的应用
- java