BZOJ 3231 Sdoi2008 递归数列

3231: [Sdoi2008]递归数列

Time Limit: 1 Sec  Memory Limit: 256 MB
Submit: 841  Solved: 378
[Submit][Status][Discuss]
Description

一个由自然数组成的数列按下式定义:
对于i <= k:ai = bi
对于i > k: ai = c1ai-1 + c2ai-2 + ... + ckai-k
其中bj和 cj (1<=j<=k)是给定的自然数。写一个程序,给定自然数m <= n, 计算am + am+1 + am+2 + ... + an, 并输出它除以给定自然数p的余数的值。
Input

由四行组成。
第一行是一个自然数k。
第二行包含k个自然数b1, b2,...,bk。
第三行包含k个自然数c1, c2,...,ck。
第四行包含三个自然数m, n, p。
Output

仅包含一行:一个正整数,表示(am + am+1 + am+2 + ... + an) mod p的值。
Sample Input

2

1 1

1 1

2 10 1000003

Sample Output

142
HINT



对于100%的测试数据:

1<= k<=15

1 <= m <= n <= 1018
题目

不要看错了,最后一点是10的18次方,不是1018

被坑了,QAQ

没看错题应该就没有什么问题了吧,矩乘求一下前n项的和

最后输出sum[n]-sum[m-1]即可

矩阵的构造

ans答案矩阵

【sum,f[n-1],f[n-2],f[n-3]........f[n-k]】

 转移矩阵

1   c[1]   c[2]    c[3]  ..... c[k-1]      c[k]

0   c[1]   c[2]    c[3]  ..... c[k-1]   c[k]

0    1      0      0      0  .......  0     0

0    0      1      0      0  .......  0     0

0    0      0      1      0  .......  0     0

0    0      0      0      1   ......  0     0

0    0      0      0      0     1....0     0

0    0      0      0      0     0    1    0

这个矩阵的长和宽都是k+1

所以最终的复杂度为O((k+1)^3*(longn+logm))

 

posted @ 2017-11-18 15:45  zhangenming  阅读(134)  评论(0编辑  收藏  举报