递推

ssl 1532

题目大意

给出数列a0,a1…ana_0,a_1…a_na0​,a1​…an​和fff的前n−1n-1n−1项f0,f1…fn−1f_0,f_1…f_{n-1}f0​,f1​…fn−1​
fi=a0∗fi−n+a1∗fi−(n−1)+...+an−1∗fi−1+anf_i=a_0*f_{i-n}+a_1*f_{i-(n-1)}+...+a_{n-1}*f_{i-1}+a_nfi​=a0​∗fi−n​+a1​∗fi−(n−1)​+...+an−1​∗fi−1​+an​
现在让你求fkf_kfk​(结果对9973取模)

输入样例

2 10
1 1 0
0 1

输出样例

55

数据范围

1⩽n⩽k⩽10181⩽ai,fi⩽1041\leqslant n\leqslant k\leqslant10^{18}\\1\leqslant a_i,fi\leqslant10^41⩽n⩽k⩽10181⩽ai​,fi⩽104

解题思路

k较大,无法直接递推,我们考虑矩阵乘法
设矩阵
[fi−nfi−(n−1)…fi−11]\begin{bmatrix} f_{i-n} &f_{i-(n-1)} & … & f_{i-1} & 1 \end{bmatrix}[fi−n​​fi−(n−1)​​…​fi−1​​1​]
fi−n−fi−2f_{i-n}-f_{i-2}fi−n​−fi−2​直接等于下一位
fi−1f_{i-1}fi−1​就是前面n项乘对应的a,然后加上最后一个1乘ana_nan​
1不变
得出需要乘的矩阵后快速幂即可

代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define wyc 9973
ll n, k;
struct matrix
{ll n, m, a[100][100];matrix operator *(matrix const &b)const{matrix c;c.n = n;c.m = b.m;for (int i = 1; i <= c.n; ++i)for (int j = 1; j <= c.m; ++j)c.a[i][j] = 0;for (int i = 1; i <= c.n; ++i)for (int k = 1; k <= m; ++k)for (int j = 1; j <= c.m; ++j)c.a[i][j] = (c.a[i][j] + a[i][k] * b.a[k][j] % wyc) % wyc;return c;}
}A, B;
void Counting(ll g)
{while(g){if (g&1) A = A * B;B = B * B;g>>=1;}
}
int main()
{scanf("%lld%lld", &n, &k);B.n = B.m = A.m = n + 1;A.n = 1;for (int i = 1; i <= n + 1; ++i){scanf("%lld", &B.a[i][n]);//前n个数乘上对应的aif (i < n) B.a[i + 1][i] = 1;//等于下一个}B.a[n + 1][n + 1] = 1;//最后一个afor (int i = 1; i <= n; ++i)scanf("%lld", &A.a[1][i]);A.a[1][n + 1] = 1;Counting(k);printf("%lld", A.a[1][1]);return 0;
}

【矩阵乘法】递推(ssl 1532)相关推荐

  1. 矩阵乘法递推的优化艺术

    对于一个线性递推式,求它第项的值,通常的做法是先构造一个的矩阵,然后在时间内求出. 其实,由于这个矩阵的特殊性,可以将时间优化到.接下来我会以一个题目来讲解矩阵乘法递推的优化. 题目:http://w ...

  2. VINS-Mono之IMU预积分,预积分误差、协方差及误差对状态量雅克比矩阵的递推方程的推导

    文章目录 1. 前言 2. IMU模型 3. 基于世界坐标系下的IMU运动模型 3.1 连续形式下的IMU运动模型 3.2 离散形式下的IMU运动模型 3.2.1 欧拉法离散形式 3.2.2 中值法离 ...

  3. 基于遗忘因子递推最小二乘法辨识一阶RC等效电路模型

    %% 基于一阶RC等效电路模型实现不同倍率下电模型参数辨识 clear clc%% 载入实验数据 % 导入hppc实验数据 load('hppc_pulse_25deg') temp = hppc_p ...

  4. 2019.08.20【NOIP提高组】模拟 B 组 排序、DP+递推、矩阵乘法+数位DP/类欧

    文章目录 0 旅游(travel) 1 做梦(dream) 2 数数(count) 初见时,她说,"我无力自保,无处可去,无人可依." 多年后,他说,"我教你射箭,你已有 ...

  5. 浅谈斐波那契数列——从递推到矩阵乘法

    说在前面 相信大家都已经知道这个中外著名的费波纳切数列了吧,关于费波那契数列有很多有趣的性质,但我们这里不讲,在这里我们只是利用斐波那契数列来引出另一个神奇的东西,矩阵乘法,递推在这里是起一个对比与铺 ...

  6. 蓝桥杯 算法提高 递推求值(矩阵快速幂)详解

    传送门 问题描述 已知递推公式: F(n, 1)=F(n-1, 2) + 2F(n-3, 1) + 5, F(n, 2)=F(n-1, 1) + 3F(n-3, 1) + 2F(n-3, 2) + 3 ...

  7. NYOJ 301 递推求值(矩阵快速幂)

    递推求值 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 给你一个递推公式: f(x)=a*f(x-2)+b*f(x-1)+c 并给你f(1),f(2)的值,请求出f(n ...

  8. 矩阵快速幂递推(五行)

    矩阵快速幂 第一次写博客,想着写哪个知识点呢..来想着还是写我第一个理解了的并且在比赛中成功写出来的(orz)矩阵快速幂. 快速幂 首先快速幂先来复习一下 所谓快速幂,就是加快幂运算的算法. 主要公式 ...

  9. HDU 6185 Covering 矩阵快速幂 递推

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6185 题目描述: 一个4*n的矩形, 你用1*2的矩形覆盖有多少种方案, n <= 1e18 ...

最新文章

  1. (0103)iOS开发之Xcode 10 Error:Multiple commands produce问题及解决方案
  2. 多路归并排序_1600W整数排序多路归并
  3. 运用RUP 4+1视图方法进行软件架构设计
  4. java interface 不能存常量数组?
  5. 如何打开手机端口_微信接收图纸dwg怎么打开?如何手机查看CAD图纸,三步免费教你...
  6. Tomcat-部署多个项目(不同端口)
  7. C和指针之学习笔记(3)
  8. 测试用例编写注意事项
  9. 由浅入深|让你彻底理解Python中的yield
  10. linux下的shell和脚本
  11. 工具 - 怎么看微信h5的源码?
  12. UNP Chapter 25 - 原始套接口
  13. MarkdownPad2
  14. orcad元件封装制作
  15. 【汉化】nitrosdk。。。这个。。。天朝V5
  16. 秃头程序员保姆教程:Spring框架自学之路(一)
  17. JAVA 清理垃圾文件简单实现
  18. 蓝桥杯单片机之PCF8591模块的使用
  19. 微信电脑端双击不能放大图片怎么回事_IOS 微信 聊天双击放大图片操作
  20. win7无线热点_电脑小技巧电脑做无线热点

热门文章

  1. Java图形 图像与多媒体基础,十一. 图形、图像与多媒体1.绘图基础
  2. mysql直接生成excel_MYSQL 将excel里面的数据直接生成sql语句
  3. python程序启动其他python程序,如何使用Python启动应用程序的实例?
  4. [PAT乙级]1042 字符统计
  5. [Java网络编程基础]TCP发送和接收数据
  6. [蓝桥杯2018初赛]星期一-日期计算
  7. Pycharm安装第三方库
  8. Stack(栈 c++模版实现)
  9. SQL10 用where过滤空值练习
  10. 滑动窗口最大值-leetcode 239题