Sequence
题意
定义:
$$
F_1=A
$$
$$
F_2=B
$$
$$
F_n=D\cdot{}F_{n-1}+C\cdot{}F_{n-2}+\lfloor\frac{P}{n}\rfloor
$$
求Fn,Mod1e9+7。
思路
一看到这个向下取整!
多么亲切啊!
整除分块啊!
……
一开始怎么都想不出来怎么把分块用进去,队友一波机智,先分块,然后矩阵快速幂,哇,秒啊,然后两个小时过去了……
由于莫比乌斯中我们经常会用到一个分块的概念:
$$
\sum_{i=1}^n\lfloor\frac{n}{i}\rfloor
$$
1 | for(int l=1,r;l<=n;l=r+1) |
那么我们就想,因为矩阵快速幂要求的是尾项是个常数,而对于这个整除来说,在某些区间内它的值是一定的,因此我们就可以先把他们划分为好几块,然后对于每个区间进行矩阵快速幂即可,有些细节注意,比如说次数不足3次时,要手写一波判断,因为没有需要的Fn-1,Fn-2,比如n小于p的时候,需要在循环内直接结束,比如n大于p的时候,分块结束后再进行裸的矩阵快速幂。
看!代码
1 |
|