T286263 某CQ的矩阵递推
题目背景
上完了本周的线性代数课,某CQ学会了矩阵乘法。
“这玩意到底能用来干什么呢?”在下课回宿舍的路上,某CQ思考起矩阵乘法的意义,但是他始终想不到,矩阵到底能有什么实际用途。
回到宿舍,某CQ闲来无事,在纸上划起了斐波那契数列。
“诶?”某CQ突然灵机一动,在其中两个相邻的项两边加上了括号。“这不就是个1x2的矩阵吗?而且这刚好符合推下一项的条件”
“那我们能给这个矩阵,乘上另一个矩阵,得到下一个项的矩阵吗?”
于是某CQ开始尝试构造,然后得到了这样一个矩阵:
0 1
1 1
用斐波那契n阶矩阵(某CQ这样叫它) (Fn Fn+1)
乘上这个矩阵,于是我们就得到了这样一个矩阵
:
(Fn+1 Fn + Fn+1)
也即
(Fn+1 Fn+2)
这样一直乘下去,就能实现斐波那契数列的递推了!
题目描述
某CQ现在拿到了一个递推数列,非常非常奇怪的递推数列。
这个数列给出了它的前n项,要推出这个数列的下一项,需要用到前n项,且这一项的值为前面n项每一项的ki倍之和。
现在他想知道这个数列的某一项到底是多少。
不过这个数可能非常非常非常的大,所以某CQ只需要你输出这一项对998244353取模的值
输入格式
第一行,包含一个正整数n,表示某CQ想知道这个数列的第n项
第二行,包含一个正整数m,表示数列的前m项是已知的
第三行,包含m个自然数,第i个数fi表示数列的第i项
第四行,包含m个自然数,第i个数ki表示推到m+1项需要第i项的ki倍
输出格式
共一行,包含一个整数,表示数列的第n项对998244353取模的结果
说明/提示
样例解释
按照题目描述的方式计算出了斐波那契数列的第5项。
数据范围及约定
对于20%的数据,满足1