UVA - 12470 Tribonacci 矩阵快速幂
来源:互联网 发布:淘宝买发票怎么搜 编辑:程序博客网 时间:2024/06/06 16:25
题目大意:fibonacci的升级版,规则是f(n) = f(n-1) + f(n-2) + f(n-3)
解题思路:水题
#include<cstdio>typedef long long ll;const int N = 3;const ll mod = 1e9 + 9;struct Matrix{ ll mat[N][N];}A, B, tmp;ll n;void init(){ for(int i = 0; i < N; i++) for(int j = 0; j < N; j++) { A.mat[i][j] = B.mat[i][j] = 0; if(i == j) B.mat[i][j] = 1; } A.mat[0][0] = A.mat[1][0] = A.mat[2][0] = A.mat[0][1] = A.mat[1][2] = 1;}Matrix matMul(Matrix &x, Matrix &y) { for(int i = 0; i < N; i++) for(int j = 0; j < N; j++) { tmp.mat[i][j] = 0; for(int k = 0; k < N; k++) tmp.mat[i][j] = (tmp.mat[i][j] + (x.mat[i][k] * y.mat[k][j]) % mod ) % mod; } return tmp;}void solve() { while(n) { if(n & 1) B = matMul(B,A); A = matMul(A,A); n >>= 1; }}int main() { while(scanf("%lld", &n) != EOF && n) { if(n == 3 || n == 1 || n == 2) { printf("%lld\n", n - 1); continue; } n -= 3; init(); solve(); ll ans = 0; ans = (ans + 2 * B.mat[0][0]) % mod; ans = (ans + B.mat[1][0]) % mod; printf("%lld\n", ans); } return 0;}
0 0
- UVA - 12470 Tribonacci 矩阵快速幂
- uva 12470 Tribonacci
- UVA - 12470 Tribonacci
- uva 12470(矩阵快速幂)
- uva 10870(矩阵快速幂)
- uva 10698 矩阵快速幂
- 【矩阵快速幂】Recurrences UVA
- UVA 11551(矩阵快速幂)
- UVA 10689 矩阵快速幂 + 快速幂取模
- uva 10655 Contemplation! Algebra 矩阵快速幂
- UVA 10870 Recurrences 矩阵快速幂
- UVa 10870 Recurrences / 矩阵快速幂
- UVA 10870 - Recurrences(矩阵快速幂)
- UVA 10655 - Contemplation! Algebra(矩阵快速幂)
- UVA 11551 - Experienced Endeavour(矩阵快速幂)
- uva 10870 - Recurrences(矩阵快速幂)
- uva 10655 - Contemplation! Algebra(矩阵快速幂)
- uva 11551 - Experienced Endeavour(矩阵快速幂)
- 算法学习(Java实现之字符串篇)····二进制求和
- "晴天"天气app的开源库逐步学习(四)
- 一个JAVA面试题
- 异常
- Gallery 实现图片逐一展示 和 显示当前图片张数
- UVA - 12470 Tribonacci 矩阵快速幂
- 真正的轻量级WebService框架——使用JAX-WS(JWS)发布WebService
- 明源售楼系统技术解析 销售控制(更名查询与变更查询)
- RAC下启动日志归档模式
- 某文件的权限为d-rw-_r--_r--,用数值形式表示该权限,则八进制数为644,文件属性为目录,为什么呢?(最近在复习linux,明天考试, 今天先总结下)
- [转发]霍夫变换直线检测的基本原理
- 用Python和Pygame写游戏-从入门到精通(3)
- 凯云水利水电工程造价管理系统 技术解析(七) 机械单价(二)
- 关于修改表结构