43行代码AC——HDU 1757 A Simple Math Problem(矩阵快速幂,附快速幂讲解)
一道经典的矩阵快速幂模板题。
传送门1——>快速幂基本思想
传送门2——>矩阵快速幂讲解(教主传授)
代码(去掉空行43行)
#include<iostream>
#include<cstring>
using namespace std;
int k, m;
struct Matrix { //1、构建矩阵快速幂结构体 int a[10][10];Matrix() { memset(a, 0, sizeof(a)); }
};//5、构造矩阵运算mul
Matrix mul(Matrix A, Matrix B) {Matrix ret;for(int i = 0; i < 10; i++) for(int j = 0; j < 10; j++) {for(int k = 0; k < 10; k++)ret.a[i][j] += (A.a[i][k] * B.a[k][j])%m;ret.a[i][j] %= m;} return ret;
} //4、构造快速幂pow
Matrix pow(Matrix A, int n) {Matrix ret;for(int i=0; i<10; i++) ret.a[i][i]=1; //单位矩阵while(n) {if(n%2 == 1) ret=mul(ret, A);A=mul(A,A);n /= 2;}return ret;
} int main() {while(cin>>k>>m) {Matrix B; //2、定义,存储求出的目标矩阵for(int i=0; i<10; i++) { int x; cin>>x; B.a[i][0]=x; }for(int i=0; i<10; i++) B.a[i][i+1]=1;if(k < 10) { cout << B.a[k][0] << endl; continue; } //3、特判 Matrix ans1=pow(B, k-9); int sum = 0;for(int i=0; i<10; i++) sum += (ans1.a[i][0]*(9-i))%m; //最后乘就可以 cout << sum%m << endl; }
return 0; }
如果这篇文章对你产生了帮助,就请给博主一个小小的赞吧!大家的点赞是我创作的最大动力!
43行代码AC——HDU 1757 A Simple Math Problem(矩阵快速幂,附快速幂讲解)相关推荐
- HDU 1757 A Simple Math Problem (矩阵快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1757 在吴神的帮助下才明白如何构造矩阵,还是好弱啊. 此处盗一张图 1 #include <io ...
- HDU - 1757 A Simple Math Problem(矩阵快速幂,水题)
题目链接:点击查看 题目大意:实现公式: f(x)=x,x<10 f(x)=a0*f(x-1)+a1*f(x-2)+--+a9*f(x-10) 题目给出a0~a9,一个n和一个m,要求输出f(n ...
- HDU 1757 A Simple Math Problem(矩阵快速幂)
题目链接 题意 :给你m和k, 让你求f(k)%m.如果k<10,f(k) = k,否则 f(k) = a0 * f(k-1) + a1 * f(k-2) + a2 * f(k-3) + -- ...
- HDU 1757 A Simple Math Problem
Problem Description Lele now is thinking about a simple function f(x). If x < 10 f(x) = x. If x & ...
- HDU - 1757 A Simple Math Problem (矩阵快速幂)
Lele now is thinking about a simple function f(x). If x < 10 f(x) = x. If x >= 10 f(x) = a0 * ...
- hdu 1757 A Simple Math Problem 构造矩阵
题意:函数f(x), 若 x < 10 f(x) = x. 若 x >= 10 f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + -- + ...
- HDU - 5974 A Simple Math Problem 题解
D - Simple Math Problem 戳上方进入原题哟~ 题目大意 给一个数 a,b. 让你求满足一下条件的 X,Y: X+Y = a LCM(X,Y) = b 解析 题目给出时间限制1s, ...
- A Simple Math Problem 矩阵打水题
A Simple Math Problem Lele now is thinking about a simple function f(x). If x < 10 f(x) = x. If x ...
- 9行代码AC——HDU 6857 -Clockwise or Counterclockwise(2020 Multi-University Training Contest 8)(判断三点顺序)
励志用尽量少的代码做高效表达 Problem Description It is preferrable to read the pdf statment. After some basic geom ...
最新文章
- 管理者应该如何进行精益管理呢?
- 无人系统自主性研究综述
- WinAPI: SetTextAlign - 设置绘图环境的文本对齐方式
- Linux下命令行(二)之文本处理基础
- SharePoint 2013 Workflow 状态栏失效
- 数据存储四种常见方式
- ansys 内聚力_内聚力 软件工程
- 吴恩达 Drive.ai 因经营困难“卖身”苹果
- windows “文件大小”与“占用空间”、文件系统与文件拷贝
- I.MX6 android 禁止低电量自动关机
- Linux如何安装并配置libxml2库?解决“libxml2 not found“问题
- AllenNLP框架学习笔记(模型篇之保存与加载)
- 塑料划分PP PE PS PA ABS PVC
- TalkingData技术实现分析
- IAR(For STM32) 安装,配置,工程创建,下载,调试
- Python3中使用flask_sqlalchemy的问题
- oracle羊毛,弃Cloudflare,薅Oracle羊毛
- 强化学习(一):简介——什么是强化学习?
- (搞笑)经典!一些很彪悍的句子
- 【转】ARM GIC中断系列(八):gicv3架构-波形为例、系列总结