LightOj 1006(矩阵快速幂)
来源:互联网 发布:php删除数据库指定元素 编辑:程序博客网 时间:2024/06/05 15:59
链接:
lightoj
题目大意:
求递推式:
解题思路:
矩阵快速幂:
实现:
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#define LL long long#define MOD 10000007#define N 6using namespace std;struct Matrix{ LL m[N][N];}init;Matrix Mult(Matrix m1, Matrix m2){ Matrix ans; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { ans.m[i][j] = 0; for (int k = 0; k < N; k++) { ans.m[i][j] = (ans.m[i][j] + m1.m[i][k] * m2.m[k][j] % MOD) % MOD; } } } return ans;}Matrix Pow(Matrix m, int b){ Matrix ans; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { ans.m[i][j] = (i == j); } } while (b) { if (b & 1) { ans = Mult(ans, m); } m = Mult(m, m); b >>= 1; } return ans;}void init_mat(){ for (int i = 0; i < 5; i++) { for (int j = 0; j < 6; j++) { init.m[i][j] = 0; } } for (int i = 0; i < 6; i++) { init.m[5][i] = 1; } init.m[0][1] = init.m[1][2] = init.m[2][3] = init.m[3][4] = init.m[4][5] = 1;}int main(){ int T; scanf("%d", &T); for (int cas = 1; cas <= T; cas++) { LL a[10]; for (int i = 0; i < 6; i++) { scanf("%lld", &a[i]); a[i] = a[i] % MOD; //MOD < 2^31 - 1, WA3发; } int n; scanf("%d", &n); printf("Case %d: ", cas); if (n < 6) { printf("%lld\n", a[n]); } else { init_mat(); init = Pow(init, n - 5); LL ans = 0; for (int i = 0; i < 6; i++) { ans = (ans + init.m[5][i] * a[i] % MOD) % MOD; } printf("%lld\n", ans); } } return 0;}
0 0
- lightoj 1006 矩阵快速幂
- LightOj 1006(矩阵快速幂)
- lightOj 1132(矩阵快速幂)
- LightOj 1332 矩阵快速幂
- lightoj 1052 矩阵快速幂
- LightOJ-1052-矩阵快速幂
- LightOj 1006 Hex-a-bonacci(矩阵快速幂)
- 【LightOJ】1006 - Hex-a-bonacci(矩阵快速幂)
- LightOJ 1070 - Algebraic Problem 矩阵快速幂
- LightOJ-1132-矩阵快速幂,math
- LightOJ - 1132 Summing up Powers 矩阵快速幂
- LightOJ 1070 Algebraic Problem (推导+矩阵快速幂)
- LightOJ 1132 - Summing up Powers 矩阵快速幂+排列组合
- LightOj 1268 Unlucky Strings (KMP+矩阵快速幂)
- LightOJ 1065 Number Sequence(矩阵快速幂)
- [矩阵快速幂] LightOJ 1132 - Summing up Powers
- [矩阵快速幂] LightOJ 1142 - Summing up Powers (II)
- Lightoj-1268 Unlucky Strings(kmp&&矩阵快速幂)
- C#调用SQL Server分页存储过程
- Linux 动态链接和静态链接简析(库名与库文件名)
- 全球最杰出的14位程序员
- Android 之 Notification
- 什么是共享经济?
- LightOj 1006(矩阵快速幂)
- Windows 7 搭建FTP
- java获取cpu、内存、硬盘信息
- 《如何欣赏书法》读书笔记(V)
- 编辑器
- Fragment小技巧——几乎可以通用的fragment创建方法
- zoj 3497 Mistwald(矩阵快速幂)
- POJ 1753 Flip Game
- [操作系统] 进程与线程