还是不会做题,没关系,那就先了解一些相关知识就好~
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://www.cnblogs.com/larvie/p/9477412.html