华为OD机试真题- 统计差异值大于相似值二元组个数【2023Q1】【JAVA、Python、C++】

题目描述
题目描述: 对于任意两个正整数A和B,定义它们之间的差异值和相似值:
差异值:A、B转换成二进制后,对于二进制的每一位,对应位置的bit值不相同则为1,否则为0;

相似值:A、B转换成二进制后,对于二进制的每一位,对应位置的bit值都为1则为1,否则为0;

现在有n个正整数A0 到A(n-1),问有多少对(i,j)(0 <= i < j < n),Ai和Aj的差异值大于相似值。

假设A=5,B=3;则A的二进制表示101;B的二进制表示011;则A与B的差异值二进制为110;相似值二进制为001;A与B的差异值十进制等于6,相似值十进制等于1,满足条件。

输入描述:
输入:一个n接下来n个正整数
数据范围:1<=n<=10^5, 1<=A[i]<2^30


输出描述:
输出:满足差异值大于相似值的对数

补充说明:
 收起
示例1
输入:
4
4 3 5 2
输出:
4
说明:
样例一解释:

满足条件的分别是(0,1) (0,3) (1,2) (2,3),共4对
示例2
输入:
5
3 5 2 8 4
输出:
8
说明:

猜你喜欢

转载自blog.csdn.net/2301_76848549/article/details/129581442
今日推荐