【数学专题】矩阵乘法
整理的算法模板合集: ACM模板
目录
- luogu P3390 【模板】矩阵快速幂
- AcWing 1303. 斐波那契前 n 项和
- AcWing 1304. 佳佳的斐波那契
- AcWing 1305. GT考试
luogu P3390 【模板】矩阵快速幂
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <iostream>using namespace std;
typedef long long ll;
const int N = 107, mod = 1e9 + 7;int n, m;
int a[N][N];
int ans[N][N];
ll k;void mul(int c[][N], int a[][N], int b[][N])
{int tmp[N][N] = {0};for(int i = 1; i <= n; ++ i){for(int j = 1; j <= n; ++ j){for(int k = 1; k <= n; ++ k){tmp[i][j] = (tmp[i][j] + (ll)a[i][k] * b[k][j]) % mod;}}}memcpy(c, tmp, sizeof tmp);
}int main(){scanf("%d%lld", &n, &k);for(int i = 1; i <= n; ++ i)for(int j = 1; j <= n; ++ j)scanf("%d", &a[i][j]);for(int i = 1; i <= n; ++ i)ans[i][i] = 1;while(k){if(k & 1) mul(ans, ans, a);mul(a, a, a);k >>= 1;}for(int i = 1; i <= n;puts(""), ++ i)for(int j = 1; j <= n; ++ j)printf("%d ", ans[i][j]);return 0;
}
AcWing 1303. 斐波那契前 n 项和
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <iostream>using namespace std;
typedef long long ll;
const int N = 3;int n, m;
int a[N][N];
int f[N];void mul(int c[], int a[], int b[][N])
{int tmp[N] = {0};for(int j = 0; j < N; ++ j){//2的行for(int k = 0; k < N; ++ k){//1的列2的行,1的列=2的行//只有一行,求这一行的每一列tmp[j] = (tmp[j] + (ll)a[k] * b[k][j]) % m;}}memcpy(c, tmp, sizeof tmp);
}void mul(int c[][N], int a[][N], int b[][N])
{int tmp[N][N] = {0};for(int i = 0; i < N; ++ i){for(int j = 0; j < N; ++ j){for(int k = 0; k < N; ++ k){tmp[i][j] = (tmp[i][j] + (ll)a[i][k] * b[k][j]) % m;}}}memcpy(c, tmp, sizeof tmp);
}int main()
{scanf("%d%d", &n, &m);int f1[N] = {1, 1, 1};int a[N][N] = {0, 1, 0,1, 1, 1,0, 0, 1};n -- ;//这里是从第一项开始的,所以要--;while(n){if(n & 1) mul(f1, f1, a);mul(a, a, a);n >>= 1;}printf("%d\n", f1[2]);return 0;
}
AcWing 1304. 佳佳的斐波那契
计算公式为:Tn=n∗Sn−PnT_n = n * S_n - P_nTn=n∗Sn−Pn
//#pragma GCC optimize(2)
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <iostream>
#include <cmath>
using namespace std;
typedef long long ll;
const int N = 4;int n, m;
int f[N][N];void mul(int c[][N], int a[][N], int b[][N])
{static int tmp[N][N];memset(tmp, 0, sizeof tmp);for(int i = 0; i < N; ++ i){for(int j = 0; j < N; ++ j){for(int k = 0; k < N; ++ k){tmp[i][j] = (tmp[i][j] + (ll)a[i][k] * b[k][j]) % m;}}}memcpy(c, tmp, sizeof tmp);
}int main()
{scanf("%d%d", &n, &m);// {fn, fn+1, sn, pn}// pn = n * sn - tnint f1[N][N] = {1, 1, 1, 0};int a[N][N] = {{0, 1, 0, 0},{1, 1, 1, 0},{0, 0, 1, 1},{0, 0, 0, 1},};int k = n - 1;while(k){if(k & 1)mul(f1, f1, a);mul(a, a, a);k >>= 1;}cout << (((ll)n * f1[0][2] - f1[0][3] % m + m) % m) << endl;return 0;
}
AcWing 1305. GT考试
【数学专题】矩阵乘法相关推荐
- 【BZOJ2326】【HNOI2011】数学作业 [矩阵乘法][DP]
数学作业 Time Limit: 10 Sec Memory Limit: 128 MB [Submit][Status][Discuss] Description Input 输入文件只有一行为用 ...
- 数学知识——矩阵乘法
矩阵乘法 文章目录 矩阵乘法 引入 例题 斐波那契前 n 项和 思路 代码 佳佳的斐波那契 思路 代码 引入 由于线性递推式可以表示成矩阵乘法的形式,也通常用矩阵快速幂来求线性递推数列的某一项. 利用 ...
- [BZOJ2326] [HNOI2011] 数学作业 (矩阵乘法)
Description Input Output Sample Input Sample Output HINT Source Solution 递推式长这样:$f[n]=f[n-1]*10^k+n$ ...
- 【bzoj2326】[HNOI2011]数学作业 矩阵乘法
题目描述 题解 矩阵乘法 考虑把相同位数的数放到一起处理: 设有$k$位的数为$[l,r]$,那么枚举从大到小的第$i$个数(即枚举$r-i+1$),考虑其对$Concatenate(l..r)$的贡 ...
- 算法提高课-数学知识-矩阵乘法-AcWing 1303. 斐波那契前 n 项和:矩阵乘法,快速幂,线性代数
题目分析 来源:acwing 分析: 先利用矩阵运算的性质将通项公式变成幂次形式,然后用快速幂的方法求解第 n项. 斐波那契数列的递推公式:f1=f2=1,fn=fn−2+fn−1(n≥3)f_1 = ...
- DeepMind攻克50年数学难题!AlphaZero史上最快矩阵乘法算法登Nature封面
新智元报道 编辑:David Joey [新智元导读]DeepMind碾压人类高手的AI围棋大师AlphaZero,下一个目标是数学算法!现已发现50年以来最快的矩阵乘法算法. 下围棋碾压人类 ...
- 0x34.数学 - 矩阵乘法
目录 矩阵 luogu P3390 [模板]矩阵快速幂 AcWing 205. 斐波那契 P1939 [模板]矩阵加速(数列) AcWing 206. 石头游戏 声明: 本系列博客是<算法竞赛进 ...
- [矩阵乘法/快速幂专题]Arc of Dream,Recursive sequence,233 Matrix,Training little cats
矩阵快速幂习题 复习矩阵乘法及快速幂模板 乘法模板 快速幂模板 T1:Arc of Dream 题目 题解 code T2:Recursive sequence 题目 题解 code T3:233 M ...
- 并行程序设计方法实验(包括openmp、向量化实现pi计算、SPECOMP2012测试、矩阵乘法优化)
目录 一.实验环境 二.专题一之积分计算圆周率 2.1向量优化 2.2 OpenMP优化 三.专题二之测试SPECOMP2012 3.1初步了解SPECOMP 3.2系统基本配置 3.3实践 3.3. ...
- 机器学习数学方面的介绍[计算机数学专题(9)]
在学习机器学习之前,应该具有坚实的计算机基础. 深入学习了数据结构与数据结构的算法.计算机组织和系统架构,也具有编写一个完整项目的能力. 我的 AI 专题,主要是以 高中数学 为基础的,所以您应该看看 ...
最新文章
- mysql导入指定数据库_从mysql全备 导入指定数据库的数据:三种考虑方法
- 查看服务器CPU的个数、CPU的核数、多核超线程数
- 凌琦:物联网——一场正在发生的变革
- Java中 SPI的使用
- 给定一个n节点二叉树,写出一个O(n)时间的非递归的过程,将该树每个结点的关键字输出(算法导论第三版第十章10.4-5)
- 微信小程序自带地图_微信小程序地图上选择位置
- CS 3:威胁情报解决方案峰会——数据是威胁情报的基础
- GPS经纬度差值对应地面距离多少米
- 很少人知道的无人机飞行原理
- 命令行查询ip所在地——Nali
- 2022RWCTF体验赛web的wp
- 互联网人员电脑上必备的免费办公软件
- 计算机主板扩展槽,主板上这多扩展插槽,都是干什么用的,看了不后悔
- 网络互连有何实际意义?进行网络互连时,有哪些共同的问题需要解决?
- 二阶偏微分方程组 龙格库塔法_1、经典四阶龙格库塔法解一阶微分方程组
- mysql客户端汉化_Mysql客户端中文乱码问题解决
- 逻辑回归LR模型简介
- python中的除法怎么表示_Python中的除法
- PWK 以及 OSCP 常见问题
- MIT开源协议,多端适用的租房小程序,带完整的管理员后台