多校第七场小知识~
还是不会做题,没关系,那就先了解一些相关知识就好~
1010
.
矩阵快速幂+分块
矩阵快速幂,因为|fn-1 fn-2|*矩阵A=|c*fn-2+d*fn-1|;
分块,因为p/n随着n而变化,所以需要按照变化点来分成不同块,这样复杂度才可以降到根号p;
分块:设 x=p/i,若x=p/i,i=p/x=p/(p/i),即此时i为使得p/i值不变最大的那个i。。。所以按照i=p/(p/i)+1进行分块即可;
快速幂:以求a的b次方来介绍,= 11的二进制为1101;最终复杂度为log₂N;
模板:int
pow(
int
a,
int
b){
int
r=1,base=a;
while
(b){
if
(b&1) r*=base;
base*=base;
b>>=1;
}
return
r;
}
矩阵快速幂:https://blog.csdn.net/wust_zzwh/article/details/52058209简直不要更好的博文~
根据递推式构造矩阵,理解&注意代码细节,其他的交给模板哈哈~
mod1e9+7: const long long mod=1e9+7;
每一次模,%mod即可;
1009 倍增,树的分块,写树
1005 欧拉函数,莫比乌斯反演。。。