HDOJ 1757 – A Simple Math Problem
来源:互联网 发布:淘宝全屏店招制作 编辑:程序博客网 时间:2024/06/05 17:21
Matrix Multiplication (& Quick Power)
Description
给出一个递推式,求f(x) 对 m 取模的结果。
Type
Matrix Multiplication
Quick Power
Analysis
很典型的矩阵乘法和快速幂的题目,需要构造 10 * 10 的矩阵。矩阵也是很经典的~
矩阵的图片没了……来个文字版的:
a0 1 0 0 0 0 0 0 0 0
a1 0 1 0 0 0 0 0 0 0
a2 0 0 1 0 0 0 0 0 0
a3 0 0 0 1 0 0 0 0 0
a4 0 0 0 0 1 0 0 0 0
a5 0 0 0 0 0 1 0 0 0
a6 0 0 0 0 0 0 1 0 0
a7 0 0 0 0 0 0 0 1 0
a8 0 0 0 0 0 0 0 0 1
a9 0 0 0 0 0 0 0 0 0
// HDOJ 1757// A Simple Math Problem// by A Code Rabbit#include <cstdio>#include <cstring>const int MAXO = 12;template <typename T>struct Matrix { T e[MAXO][MAXO]; int o; Matrix(int _o) { memset(e, 0, sizeof(e)); o = _o; } Matrix operator*(const Matrix& one) { Matrix res(o); for (int i = 0; i < o; i++) for (int j = 0; j < o; j++) for (int k = 0; k < o; k++) res.e[i][j] += e[i][k] * one.e[k][j]; return res; } Matrix operator%(int mod) { for (int i = 0; i < o; i++) for (int j = 0; j < o; j++) e[i][j] %= mod; return *this; }};template <typename T>T QuickPower(T radix, int exp, int mod) { T res = radix; exp--; while (exp) { if (exp & 1) res = res * radix % mod; exp >>= 1; radix = radix * radix % mod; } return res;}int k, m;int a[MAXO];const int F[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };int main() { while (scanf("%d%d", &k, &m) != EOF) { // Input. for (int i = 0; i < 10; i++) scanf("%d", &a[i]); // Solve. if (k < 10) { printf("%d\n", k % m); continue; } Matrix<long long> one(10); for (int i = 0; i < one.o; i++) one.e[i][0] = a[i]; for (int i = 0; i < one.o - 1; i++) one.e[i][i + 1] = 1; Matrix<long long> ans = QuickPower(one, k - 9, m); // Compute ans output. int sum = 0; for (int i = 0; i < 10; i++) sum += F[i] * ans.e[i][0]; printf("%d\n", sum % m); } return 0;}
- HDOJ 1757 – A Simple Math Problem
- HDOJ 1757 A Simple Math Problem
- HDOJ 1757 A Simple Math Problem
- 【矩阵乘法】hdu hdoj 1757 A Simple Math Problem
- HDOJ-1757A Simple Math Problem(矩阵乘法快速幂)
- hdoj-1757-A Simple Math Problem【矩阵的快速幂】
- hdoj 1757 A Simple Math Problem 【矩阵快速幂】
- hdoj 1757 A Simple Math Problem 【矩阵快速幂】
- HDOJ 1757 A Simple Math Problem (矩阵快速幂)
- hdoj 5974 A Simple Math Problem
- 1757 A Simple Math Problem
- A Simple Math Problem
- A Simple Math Problem
- A Simple Math Problem
- A Simple Math Problem
- A Simple Math Problem
- A simple math problem
- A Simple Math Problem
- 【转】mipi介绍
- hdu Phone List (字典树)
- 登陆窗体显示动态效果
- 思科的网络容错技术
- AJAX 跨域请求 - JSONP获取JSON数据
- HDOJ 1757 – A Simple Math Problem
- 浅析闭包在缓存逻辑中的一次应用
- 思科的网络安全技术
- Java内部类
- vb.net 调式 检测到loaderlock错误 (已解决)
- 28个Unix/Linux的命令行神器
- 通信接口介绍
- 注册码 集合
- VMware中虚拟的linux系统空间不足增加硬盘的办法