卡常技巧
链接
位运算技巧
链接
快速乘(解决了可能会爆longlong的问题)
inline ll ksc(ll x,ll y,ll mod)
{
return (x*y-(ll)((long double)x/mod*y)*mod+mod)%mod;
}
快速加、减
inline int inc(int x,int v,int mod){x+=v;return x>=mod?x-mod:x;}//代替取模+
inline int dec(int x,int v,int mod){x-=v;return x<0?x+mod:x;}//代替取模-
LOG2打表
inline int LOG2_1(int x){
static const int tb[32]={0,9,1,10,13,21,2,29,11,14,16,18,22,25,3,30,8,12,20,28,15,17,24,7,19,27,23,6,26,5,4,31};
x|=x>>1; x|=x>>2; x|=x>>4; x|=x>>8; x|=x>>16;
return tb[x*0x07C4ACDDu>>27];
}