[普通递推数列] 转自《信息学奥赛之数学一本通》

[普通递推数列]

问题描述

给出一个k阶齐次递推数列f[i]的通项公式
\[
f[i] = \prod_{j = 1}^k a_jf_{i-j}
\]
以及初始值f[0], f[1], f[2], ··· , f[k - 1], 求f[n].

输入格式

第一行两个整数n, k;

第二行k个整数,a[1] ~ a[k]

第三行k个整数,f[0] ~ f[k - 1]

输出格式

一行一个整数p, 是f[n] % 10000 的结果

example input

10 2

1 1

1 1

example output

89



solution
\[
令 F =
\begin{Vmatrix}
f_{i - 1}\f_{i - 2}\\vdots\f_{i - k}
\end{Vmatrix},
F^` =
\begin{Vmatrix}
f_{i}\f_{i - 2}\\vdots\f_{i-k+1}
\end{Vmatrix}\\
设F * A = F ^ `,通过比较,可知:\A =
\begin{Vmatrix}
a_1 \quad a_2 \quad a_3 \quad \cdots \quad a_n\1 \quad \; 0 \quad \; 0 \quad \; \cdots \quad \; 0 \0 \quad \; 1 \quad \; 0 \quad \; \cdots \quad \; 0 \\vdots \quad \; \vdots \quad \; \vdots \quad \; \ddots \quad \; \vdots \0 \quad \; 0 \quad \; \cdots \quad \;1 \quad \; 0 \\end{Vmatrix}\于是, 若有 F_0 =
\begin{Vmatrix}
f_{k - 1}\f_{k - 2}\\vdots\f_{0}
\end{Vmatrix},\则\F_{i - k + 1} =
\begin{Vmatrix}
f_{i}\f_{i - 1}\\vdots\f_{i - k + 1}
\end{Vmatrix}, ans = F_{i - k + 1}[1][1],求解即可
\]

原文地址:https://www.cnblogs.com/yangxuejian/p/11415762.html

时间: 2024-10-10 00:39:45

[普通递推数列] 转自《信息学奥赛之数学一本通》的相关文章

题目1081:递推数列 (矩阵快速幂解递推式)

题目1081:递推数列 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5885 解决:800 题目描述: 给定a0,a1,以及an=p*a(n-1) + q*a(n-2)中的p,q.这里n >= 2. 求第k个数对10000的模. 输入: 输入包括5个整数:a0.a1.p.q.k. 输出: 第k个数a(k)对10000的模. 样例输入: 20 1 1 14 5 样例输出: 8359 来源: 2009年清华大学计算机研究生机试真题 1 #include<stdio.h> 2 #

根据a(n)/a(n-1)的无理数极限逆推二阶线性递推数列公式

首先看这样一道题目: a(n)=6*a(n-1)-a(n-2),a1=1,a2=5,求b(n)=a(n+1)/a(n)的极限  数列通项两边除以a(n-1) 得: a(n)/a(n-1)=6-a(n-1)/a(n-2) 根据单调有界定理可以证明极限存在 单调性可以用数学归纳法证明,不再赘述 设极限为x 则x=6-1/x x^2-6*x+1=0 解一元二次方程得 x=3+2√2 我举这个例子,是因为,这个例子和2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络E题的数列很像,只不过在后面减了个

a(n+1) = f[a(n)] 型递推数列的迭代作图(玩计算器玩出了问题)

把任意一个正数开平方再加 \(1\), 把得到的结果也开平方再加 \(1\), 不断算下去,最终总会得到 \( \frac{3+\sqrt{5}}{2} \approx 2.61804 \), 即: \( \sqrt{\cdots \sqrt{\sqrt{\sqrt{x}+1}+1}+1}+1 = \frac{3+\sqrt{5}}{2} \;\;\;\; (x>0) \) 这是某同学玩计算器时发现的,非常有意思.不管一开始给的数是多少,终最都会停在这个神奇的数上,它是黄金比 \( \frac{

The Nth Item 南昌网络赛(递推数列,分段打表)

The Nth Item \[ Time Limit: 1000 ms \quad Memory Limit: 262144 kB \] 题意 给出递推式,求解每次 \(F[n]\) 的值,输出所有 \(F[n]\) 的 \(xor\) 值. 思路 对于线性递推数列,可以用特征方程求出他的通项公式,比如这题 \[ F[n] = 3F[n-1]+2F[n-2] \x^2 = 3x+2 \x = \frac{3\pm \sqrt{17}}{2} \] 令 \(F[n] = C_1x_1^n + C_

生成函数求解一般递推数列通项公式

目录 写在前面 范例 - 对斐波那契通项公式的推导 对一般递推数列通项公式的推导 写在前面 本文解出的通项公式十有八九与使用特征根方程接触的在形式上不同,但是其正确性可以保证. 如有强迫症请自行化简. 范例 - 对斐波那契通项公式的推导 设生成函数 \[ A=1+x+2x^2+3x^3+5x^4+... \] 不难发现,\(i-1\)项系数即为斐波那契数列第\(i\)项的值. 由于斐波那契数列递推式为 \[ F(i)=F(i-1)+F(i-2) \] 我们得到另外两个生成函数 \[ xA=x+x

利用矩阵乘法计算递推数列的某一项

每日一九度之 题目1081:递推数列

时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6966 解决:978 题目描述: 给定a0,a1,以及an=p*a(n-1) + q*a(n-2)中的p,q.这里n >= 2. 求第k个数对10000的模. 输入: 输入包括5个整数:a0.a1.p.q.k. 输出: 第k个数a(k)对10000的模. 样例输入: 20 1 1 14 5 样例输出: 8359 普通方法(时间超限),当数据比较小的时候适用,数据大了就会产生时间超限的问题: //Asimple #include <io

JAVA语法——递推数列

题目描述 给定a0,a1,以及an=p*a(n-1) + q*a(n-2)中的p,q.这里n >= 2. 求第k个数对10000的模. 输入描述: 输入包括5个整数:a0.a1.p.q.k. 输出描述: 第k个数a(k)对10000的模. 链接:https://www.nowcoder.com/questionTerminal/d0e751eac618463bb6ac447369e4aa25 来源:牛客网 import java.util.*; public class Main { publi

递推数列

题目描述 给定a0,a1,以及an=p*a(n-1) + q*a(n-2)中的p,q.这里n >= 2. 求第k个数对10000的模. 输入描述: 输入包括5个整数:a0.a1.p.q.k. 输出描述: 第k个数a(k)对10000的模. 分析 循环求出ak即可 #include <iostream> using namespace std; int main(){ int a0, a1, p, q, k; cin >> a0 >> a1 >> p &