HDU 1757 矩阵快速幂
来源:互联网 发布:mac登录不上apple id 编辑:程序博客网 时间:2024/06/05 05:12
传送门: HDU 1757
题解:
简单的矩阵构造
构造矩阵时注意数组不要溢出, 或者把数组开大
构造
|0 1 0 ……… .0| * |f(0)| = | f(1) |
|0 0 1 ………. 0| * |f(1)| = | f(2) |
|…………………1| * |……| = |……..|
|a9 a8 ………a0| * |f(9)| = |f(10)|
注意取模
code:
/*adrui's submissionLanguage : C++Result : AcceptedLove : llFavorite : Dragon BallsStanding in the Hall of Fame*/#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;#define debug 0#define LL long long#define M(a, b) memset(a, b, sizeof(a))int k, m;struct Matrix { //矩阵 int mat[10][10]; void init() { M(mat, 0); for (int i = 0; i < 10; i++) mat[i][i] = 1; } void Debug() { //debug for (int i = 0; i < 10; i++) for (int j = 0; j < 10; j++) printf("%d%s", this->mat[i][j], j == 9 ? "\n" : " "); }};Matrix operator * (Matrix a, Matrix t) { //矩阵乘法 Matrix c; M(c.mat, 0); for (int i = 0; i < 10; i++) for (int j = 0; j < 10; j++) { for (int k = 0; k < 10; k++) c.mat[i][j] = (c.mat[i][j] + a.mat[i][k] * t.mat[k][j]) % m; } return c;}Matrix operator ^ (Matrix tmp, int b) { //快速幂 Matrix res; res.init(); while (b) { if (b & 1) res = res * tmp; tmp = tmp * tmp; b >>= 1; } return res;}int main() {#if debug freopen("in.txt", "r", stdin);#endif //debug while (~scanf("%d%d", &k, &m)) { if (k < 10) printf("%d\n", k % m); else { Matrix tmp; M(tmp.mat, 0); //构造底数矩阵 for (int i = 0; i < 10; i++) { scanf("%d", &tmp.mat[0][i]); if(i <= 8) tmp.mat[i + 1][i] = 1; //注意防溢出 } //tmp.Debug(); Matrix res = tmp ^ (k - 9); //快速幂 //res.Debug(); int ans = 0; for (int i = 0; i < 10; i++) { ans = (ans + i * res.mat[0][9 - i]) % m; } printf("%d\n", ans); } } return 0;}
1 0
- 【矩阵快速幂】hdu 1757
- hdu 1757 矩阵快速幂
- hdu 1757(矩阵快速幂)
- HDU 1757 矩阵快速幂
- hdu 1757(快速矩阵幂)
- HDU 1757 矩阵快速幂
- HDU 1757 矩阵快速幂模版
- HDU 1757 简单的矩阵快速幂
- HDU-1757(矩阵快速幂)
- 【矩阵快速幂】hdu 1575
- hdu 2604 矩阵快速幂
- hdu-1575矩阵快速幂
- hdu 1575 矩阵快速幂
- hdu 1575(矩阵快速幂)
- hdu 3306 矩阵快速幂
- hdu 1575 矩阵快速幂
- hdu 2855 矩阵快速幂
- hdu 3117 矩阵快速幂
- MATLAB中 diff 函数的用法
- leetcode中字符串转化为数字
- Intent五中启动其它Activity的方式
- 第三方框架的使用
- Kafka源码深度解析-序列7 -Consumer -coordinator协议与heartbeat实现原理
- HDU 1757 矩阵快速幂
- 用Python做投资-小试牛刀
- 丽兹行项目
- ConvertLUnicodeStringToNullTerminatedString
- MPI并行计算与矩阵(2)
- Java三线程循环有序打印ABC
- Fisher vector 学习。
- View、自定义属性
- Python执行带参数的外部程序