「Cfz Round 2」Binary

比较有意思的一道题。

考虑二进制下的加一,就是选从低位向高位最长的连续的1,然后将它变成0,然后下一位变成1。因为之后的位都不变,所以可以不考虑之后的影响。所以只需统计这一位的异或和和之前几位的异或和是否相等即可。如果相等,那么末位是111...10加一下就会变成000...01,因为高位都是一样的,所以贡献为高位还有几位的2次幂。注意这个贡献如果为11....10(已经到最高位),是为1。这个贡献如果为11....11(已经到最高位),是为1,需要特判。

posted @   wuhupai  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示