若\(n\)的第\(i\)位为\(1\),而我们需要不断令\(n+1\)找到下一个最小的\(k\),使得\(k\)的第\(i\)位为\(0\)。
技巧:
假设\(n\)为10101[1]1001,括号内是要求的第\(i\)位
那么先将二进制下的\(n>>i\),变为十进制后\(+1\),再转为二进制并\(<<i\),即
\[(n/(1<<i)+1)*(1<<i) \]参考@此处
标签:843,CF1775C,Codeforces,Div,Round,位为 From: https://www.cnblogs.com/MrWangnacl/p/17043360.html