本文写于2017-10-31,其中的一些思路可能存在问题。本文移至此处时暂未重新学习。
快速乘是防止爆long long的,一般用的情况是模数也是long long 然后直接相乘可能会爆的那种情况。
快速幂的原理大概就是把指数变成二进制,就可以把复杂度降到O(log n),比如a^11=a^8a^2a^1
long long p;long long speedpow(long long a,long long b) //return a^b (^表示乘方){long long ans=1,base=x;while(b) //当b不为0{if(b&1) //即if(b%2==1)ans=(ans*Base)%p;Base=(Base*Base)%p;b>>=1;}return ans;}long long speedmul(long long a,long long b){long long ans=0;while(b){if(b&1)ans=ans*a%p;a=(a<<1)%p;b>>=1;}return ans;}
