我一直在尝试使用位操作来解决这个问题,因为对于每个数组元素,它将显示多少时间作为子集的最大值,并且类似地显示为子集的最小值的次数。我猜是(2 ^(n-1))。现在因为我们需要计算机按位OR,我们可以计算每个位(没有最大值)+(没有最小值的次数) - (两者都不常见)。
但在那之后,我迷失了,并没有得到解决它的任何线索。如果有人能够深入了解这个问题,我会很高兴。这是过去比赛的问题。提前谢谢。
测试用例供参考
示例输入
3
2 5 5
示例输出
26
解释
数组包含3个整数。因此,尺寸> = 2的所有子集是: -
{{2,5},{2,5},{5,5},
{2,5,5}},因此这些子集的最大和最小元素的按位OR是
分别为{7,7,5,7},因此总和为7 + 7 + 5 + 7 = 26。