我们得到一个大小为N的数组,我们必须计算所有对(i,j)的Ai和(&)Aj之和,其中i 最佳答案 我们可以独立地解决这个问题。 关于arrays - 成对和运算,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28178831/
对于固定位b
,我们调用将该位设置为1f(b)
的元素数。
答案是sum for all b f(b) * (f(b) - 1) / 2 * 2 ^ b
。
为什么是正确的?假设b
是固定的两个数字中的“和”将此位设置为“一”如果且仅当这两个数字都将此位设置为“一”时。如果具有此位集的元素数为f(b)
,则正好有f(b) * (f(b) - 1) / 2
对,这样两个元素都具有此位集。现在我们可以找到所有b
的和。