快速幂取模
long long pow_mod(long long a, long long b, long long mod) {
long long res = 1;
while(b){
if (b & 1)
res = (res * a) % mod;
a = (a * a) % mod;
b >>= 1;
}
return res % mod;
}
素数表
int prime[100010];
void primeTable() {
int i, j;
memset(prime, 0, sizeof(prime));
for(i = 2; i <= 100000; i++)
if(!prime[i])
for(j = i * 2; j <= 100000; j += i)
prime[j] = 1;
}
莫队算法(分块)
struct query{
int l, r, idx, block;
bool operator < (const query x) const {
if(x.block == block)
return r < x.r;
return block < x.block;
}
}