提取整数最右边的 N 位
2022-09-02 20:52:43
在 http://code.google.com/codejam/contest/dashboard?c=433101#s=a&a=0 的代码果酱资格赛中,有一个叫做鲷鱼链的问题。从竞赛分析中,我了解到这个问题需要一些微调的东西,比如提取整数最右边的N位,并检查它们是否都是1。我看到一个参赛者(Eireksten)的代码执行了如下操作:
(((K&(1<<N)-1))==(1<<N)-1)
我不明白这是怎么回事。在比较中,-1 有什么用?如果有人能解释这一点,这对我们菜鸟来说将非常有用。此外,任何有关识别此类问题的提示将不胜感激。我使用了一个幼稚的算法来解决这个问题,最终只解决了较小的数据集。(编译更大的数据集需要花费大量时间,该数据集需要在8分钟内提交。提前致谢。