逻辑:用一个32长度的数组 记录 所有数 在不同位数 出现的总次数 之后%3
然后把剩余的数 组合出一个数 便是结果 组合用 | 取模运算
#include
int main()
{
int nums[10] = { 3,4,3,3,5,5,5,6,6,6 };
int numsSize = 10;
int n[32] = { 0 };
int i = 0;
int k = 0;
for (i = 0; i < 32; i++)
{
for (int j = 0; j < numsSize; j++)
{
n[i] += ((nums[j] >> i) & 1);
}
n[i] %= 3;
k = k | (n[i] << i);
}
printf("%d", k);
return 0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)