我们得到一个大小为N的数组,我们必须计算所有对(i,j)的Ai和(&)Aj之和,其中i

最佳答案

我们可以独立地解决这个问题。
对于固定位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的和。

关于arrays - 成对和运算,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28178831/

10-12 18:10