& 与运算
9&5可写算式如下:
00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码) 9&5=1//快速乘法 int qmul_num(int a, int b) {
int ans = 0;
while(b) {
if(b & 1) ans += a;
b >>= 1;
a <<= 1;
}
return ans;
}//快速乘法 + 取模 int qmul_mod(int a, int b, intmod) {
int ans = 0;
while(b) {
if((b %= mod) & 1) ans += a %= mod;
b >>= 1;
a <<= 1;
}
return ans % mod;
}//快速幂 int pow_num(int a, int n) {
if(a == 0) return0;
int ans = 1;
while(n) {
if(n & 1) ans *= a;
n >>= 1;
a *= a;
}
return ans;
}//快速幂 + 取模int pow_mod(int a, int n, intmod) {
if(!a) return0;
int ans = 1;
while(n) {
if(n & 1) ans = (ans%mod) * (a%mod);
n >>= 1;
a *= a %= mod;
}
return ans % mod;
}//快速幂 + 取模 (简化)int pow_mod(int a, int n, intmod) {
if(!a) return0;
int ans = 1;
while(n) {
if(n & 1) ans *= a %= mod;
n >>= 1;
a *= a;
}
return ans % mod;
}