一些简化代码的小技巧
tips
本文专门用于介绍一些非常好用的函数和操作,学习一个是一个。可以使得比赛的时候大大简化工作量。
计算二进制中的1的个数
__builtin_popcount(x)
计算gcd
__gcd(x,y)
计算全排列
next_permutation(a,a+n)
auto
string s;
cin>>s;
for(auto c:s) cout<<c<<" ";
判断乘积是否超long long
bool Overflow(ll x,ll y)
{
if(x>LLONG_MAX/y)return false;
else return true;
}
快速幂
ll fpow(ll n, ll k, ll p = mod){ll r = 1; for(;k;k>>=1){if(k&1)r = r*n%p; n = n *n%p;}return r; }
逆元
ll inv(ll n, ll p = mod){return fpow(n,p-2,p);}