UVA10870递推关系(矩阵乘法)
题意:
给以个递推f(n) = a1 f(n - 1) + a2 f(n - 2) + a3 f(n - 3) + ... + ad f(n - d), for n > d.,给你n,d,a1,a2..ad ,f[1],f[2]..f[d],让你求f[n]%m.
思路:
比较基础的矩阵题目,每次都构造一个d*d的矩阵,然后用快速幂求出来它的n-1次幂,然后在求出乘积就行了,简单构造,没有什么坑点。
#include<stdio.h>
#include<string.h>
typedef struct
{
long long Mat[16][16];
}MAT;
long long n ,MOD ,d;
MAT mm(MAT a ,MAT b)
{
MAT c;
memset(c.Mat ,0 ,sizeof(c.Mat));
for(int i = 1 ;i <= d ;i ++)
for(int j = 1 ;j <= d ;j ++)
for(int k = 1 ;k <= d ;k ++)
c.Mat[i][j] = (c.Mat[i][j] + a.Mat[i][k] * b.Mat[k][j])%MOD;
return c;
}
MAT Quick(MAT a ,long long b)
{
MAT c;
memset(c.Mat ,0 ,sizeof(c.Mat));
for(int i = 1 ;i <= d ;i ++)
c.Mat[i][i] = 1;
while(b)
{
if(b&1) c = mm(c ,a);
a = mm(a ,a);
b>>=1;
}
return c;
}
int main ()
{
long long D[16] ,F[16] ,i;
MAT A;
while(~scanf("%lld %lld %lld" ,&d ,&n ,&MOD) && d + n + MOD)
{
for(i = 1 ;i <= d ;i ++)
{
scanf("%lld" ,&D[i]);
D[i] %= MOD;
}
for(i = 1 ;i <= d ;i ++)
{
scanf("%lld" ,&F[i]);
F[i] %= MOD;
}
if(n <= d)
{
printf("%lld\n" ,F[n]);
continue;
}
memset(A.Mat ,0 ,sizeof(A.Mat));
int x = 2 ,y = 1;
for(i = 2 ;i <= d ;i ++)
{
A.Mat[x][y] = 1;
x ++ ,y ++;
}
for(i = 1 ;i <= d ;i ++)
A.Mat[i][d] = D[d-i+1];
A = Quick(A ,n - 1);
long long Ans = 0;
for(i = 1 ;i <= d ;i ++)
{
Ans += F[i] * A.Mat[i][1];
Ans %= MOD;
}
printf("%lld\n" ,Ans);
}
return 0;
}
UVA10870递推关系(矩阵乘法)相关推荐
- 十个利用矩阵乘法解决的经典题目
出自matrix67.com 好像目前还没有这方面题目的总结.这几天连续看到四个问这类题目的人,今天在这里简单写一下.这里我们不介绍其它有关矩阵的知识,只介绍矩阵乘法和相关性质. 不要以为数学 ...
- 矩阵乘法递推的优化艺术
对于一个线性递推式,求它第项的值,通常的做法是先构造一个的矩阵,然后在时间内求出. 其实,由于这个矩阵的特殊性,可以将时间优化到.接下来我会以一个题目来讲解矩阵乘法递推的优化. 题目:http://w ...
- 【转载】ACM中矩阵乘法的应用
copied from 大神's blog 不要以为数学中的矩阵也是黑色屏幕上不断变化的绿色字符.在数学中,一个矩阵说穿了就是一个二维数组.一个n行m列的矩阵可以乘以一个m行p列的矩阵,得到的结果是 ...
- 矩阵之矩阵乘法(转载)
参考Matrix67:http://www.matrix67.com/blog/archives/276 十个利用矩阵乘法解决的经典题目 好像目前还没有这方面题目的总结.这几天连续看到四个问这类题目的 ...
- 【ALGO】矩阵乘法
文章导航 kkk阶常数系线性递推关系 乘法规则 例题 ACW 1303. Fibonacci前nnn项和 题面 解析 AC代码 ACW 1304. 佳佳的Fibonacci 题面 解析 AC代码 HN ...
- 如何在CPU上优化GEMM矩阵乘法
如何在CPU上优化GEMM矩阵乘法 How to optimize GEMM on CPU (TL;DR) TVM 提供抽象接口,允许用户分别描述算法和算法的实现组织(所谓的调度).通常,在高性能调度 ...
- CPU的自动调度矩阵乘法
CPU的自动调度矩阵乘法 这是一个有关如何对CPU使用自动调度程序的文档. 与依靠手动模板定义搜索空间的基于模板的autotvm不同,自动调度程序不需要任何模板.用户只需要编写计算声明,而无需任何调度 ...
- [学习笔记]矩阵乘法及其优化dp
1.定义: $c[i][j]=\sum a[i][k]\times b[k][j]$ 所以矩阵乘法有条件,(n*m)*(m*p)=n*p 即第一个矩阵的列数等于第二个矩阵的行数,否则没有意义. 2.结 ...
- ICML 2021:矩阵乘法无需相乘,速度提升100倍,MIT开源最新近似算法
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 在不做乘 ...
- 大佬是怎么优雅实现矩阵乘法的?
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨立交桥跳水冠军 来源丨https://zhuanlan.zhi ...
最新文章
- Android 取得 ListView中每个Item项目的值
- 2015 HIAST Collegiate Programming Contest J
- Java中基本数据类型和Object之间的关系
- 第一篇博客——用来写自己
- Linux是否兼容windows跨区卷,简单卷与跨区卷的区别介绍
- react 使用 mobx_如何使用React和MobX状态树构建基于状态的路由器
- 开发个好的RTMP播放器到底难在哪里?RTMP播放器对标和考察指标
- redis无序集合set类型详解
- 华为P50 Pro最新渲染图曝光:后置造型有点奇怪
- css的长度单位没有哪些,css 长度单位知多少
- 找出数组中只出现1次的两个元素
- java8 gc配置_基于JDK8的JVM参数设置和GC日志解读
- 新手必看:揭秘德州扑克概率表
- flow control
- 1688API item_search_img - 拍立淘搜索淘宝商品
- XTUOJ-1281-Cute String
- Remix-IDE(一)
- 4K60帧!RayLink远程控制软件如何帮助设计师远程办公?
- cadence 批量一次性修改title 页码标题等
- php安全新闻早八点-Microdoor-第三季