
快速幂
WangRenFengzzZ
人生有些事不做可能没啥影响,但是那些事是做可能会影响的一生!
展开
-
快速幂取模(当数很大时,相乘long long也会超出的解决办法)
当几个数连续乘最后取模时,可以将每个数字先取模,最后再取模,即%对于*具有结合律。但是如果当用来取模的数本身就很大,采取上述方法就不行了。这个时候可以借鉴快速幂取模的方法,来达到大数相乘取模的效果 LL mul(LL a,LL b) { LL ans=0; while(b) { if(b&1) ans=(ans+a)%p; a=(a...原创 2018-05-20 20:41:52 · 2327 阅读 · 0 评论 -
【【快速幂】】
首先,快速幂的目的就是做到快速求幂,假设我们要求a^b,按照朴素算法就是把a连乘b次,这样一来时间复杂度是O(b)也即是O(n)级别,快速幂能做到O(logn),快了好多好多。它的原理如下: 假设我们要求a^b,那么其实b是可以拆成二进制的,该二进制数第i位的权为2^(i-1),例如当b==11时 a11=a(2^0+2^1+2^3) 11的二...原创 2018-08-04 09:33:49 · 175 阅读 · 0 评论 -
【【快速幂矩阵】】
直接上代码: 同快速幂思路一样,不过是将快速幂中的值相乘变成矩阵相乘! struct Matrix //定义结构体 { int m[maxn][maxn]; //矩阵 }ans,res; //结构体中的答案 ,和需要乘的值 Maxtrix Mul (Matrix A,Matrix B,int n){ //矩阵乘法 Matrix tmp; for...原创 2018-08-07 12:54:10 · 108 阅读 · 0 评论