HDU5015 233 Matrix(矩阵快速幂)
来源:互联网 发布:用python的turtle画图 编辑:程序博客网 时间:2024/05/22 15:13
HDU5015 233 Matrix(矩阵快速幂)
题目链接
题目大意:
给出n∗m矩阵,给出第一行a01, a02, a03 ...a0m (分别是233, 2333, 23333...), 再给定第一列a10, a10, a10, a10,...an0.矩阵中的每个元素等于左边的加上上面的,求出anm.
解题思路:
先要根据矩阵元素的特征得出相乘的矩阵T, 然后就是求这个矩阵T的m次幂(这里就可以用矩阵快速幂),最后再和给定的第一列所形成的矩阵相乘,就能得到anm。
求矩阵T请参考
代码:
#include <cstdio>#include <cstring>typedef long long ll;const int N = 15;const ll MOD = 10000007;ll A[N][N];int B[N];int n;ll m;struct Rec { ll v[N][N]; Rec () { memset (v, 0, sizeof (v));} void init () { for (int i = 0; i < n + 2; i++) for (int j = 0; j < n + 2; j++) v[i][j] = A[i][j]; } Rec operator * (const Rec &a) { Rec tmp; for (int i = 0; i < n + 2; i++) for (int j = 0; j < n + 2; j++) for (int k = 0; k < n + 2; k++) tmp.v[i][j] = (tmp.v[i][j] + (v[i][k] * a.v[k][j]) % MOD) % MOD; return tmp; } Rec operator *= (const Rec &a) { return *this = *this * a; }}num;void init () { memset (A, 0, sizeof (A)); for (int i = 0; i < n + 1; i++) { A[i][0] = 10LL; A[i][n + 1] = 1LL; } A[n + 1][n + 1] = 1LL; for (int i = 1; i < n + 1; i++) for (int j = 1; j <= i; j++) A[i][j] = 1LL; B[0] = 23;}Rec f(ll m) { if (m == 1) return num; Rec tmp; tmp = f(m / 2); tmp *= tmp; if (m % 2) tmp *= num; return tmp;}int main () { while (scanf ("%d%lld", &n, &m) != EOF) { for (int i = 1; i <= n; i++) scanf ("%d", &B[i]); init(); B[n + 1] = 3; num.init (); num = f(m);/* for (int i = 0; i <= n + 1; i++) { for (int j = 0; j <= n + 1; j++) printf ("%lld ", num.v[i][j]); printf ("\n"); }*/ ll ans = 0; for (int i = 0; i <= n + 1; i++) ans = (ans + (num.v[n][i] * B[i]) % MOD) % MOD; printf ("%lld\n", ans); } return 0;}
0 0
- hdu5015 233 Matrix 矩阵快速幂
- HDU5015-233 Matrix(矩阵快速幂)
- HDU5015 233 Matrix(矩阵快速幂)
- hdu5015 233 Matrix(矩阵快速幂)
- 【矩阵快速幂】 hdu5015 233Matrix
- HDU5015 233 Matrix(矩阵快速幂)
- hdu5015 233 Matrix 矩阵快速幂 矩阵构造方法
- 【hdu5015】233 Matrix——矩阵快速幂
- 解题报告:HDU5015 233 Matrix 矩阵快速幂
- hdu5015——233 Matrix(矩阵快速幂)
- HDU5015---233 Matrix (矩阵快速幂(递推))
- hdu5015---233 Matrix(矩阵)
- 矩阵快速幂-HDU5015
- 233 Matrix(hdu5015 矩阵)
- hdu5015(矩阵快速幂)
- hdu5015 233 Matrix(构造矩阵)
- hdu5015 矩阵快速幂233(好题)
- HDU5015-233 Matrix
- java中静态方法何时使用?
- iOS开发
- Java虚拟机1——Java内存结构
- 07Excel表格根据序列值不填充不同颜色
- 代理相关总结
- HDU5015 233 Matrix(矩阵快速幂)
- Java -Android 学习(第四天)
- IOS开发--自定义控件
- 编程人生,就要积极人生,积极就需要学习,学习需要总结
- Android--多线程之Handler
- 简单说一下const在各个位置的含义
- 【Unity3D】如何让Unity3D Mecanim动画系统Generic动画支持动画中的位移
- WebView宽度自适应
- 万能铣床机床结构及特点