2025 年 06 月 三级真题(2)--奇偶校验

【题目】

【解题思路】

这道题的核心问题是如何求出所有数据转换成二进制数据后包含的 1 的个数。我们知道十进制转二进制采用的的是"除2倒取余"的方法,也就是转换为的二进制数据实际就是由原数据不断的除以2,同时保留余数,最后将余数逆序输出得到。而本题并不需要得到实际的二进制数据,只需要得到二进制数据中 1 的个数,所有我们只需要判断每一次得到的余数是0还是1,如果是 1 就统计。

【代码】

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
int main()
{

  int n;
  cin>>n;
  int a[n];
  int cnt=0;//统计1的个数
  int check;//校验码
  for(int i=0;i<n;i++)
  {  
    cin>>a[i];//输入一个数
    while(a[i]!=0)//求数转换为二进制之后,1的个数
    {
      if(a[i]%2==1)
        cnt++;
      a[i]/=2;//更新
    
    }
  }
  if(cnt%2==1)//如果1的个数为奇数个,则校验码为1
    check=1;
  else
    check=0;//否则校验码为0
  cout<<cnt<<" "<<check;
  
  return 0;
}
相关推荐
石山代码6 分钟前
C++ 内存分区 堆区
java·开发语言·c++
心中有国也有家11 分钟前
cann-recipes-infer:昇腾 NPU 推理的“菜谱集合”
经验分享·笔记·学习·算法
绝知此事20 分钟前
【算法突围 01】线性结构与哈希表:后端开发的收纳术
java·数据结构·算法·面试·jdk·散列表
碧海银沙音频科技研究院28 分钟前
通话AEC与语音识别AEC的软硬回采链路
深度学习·算法·语音识别
csdn_aspnet1 小时前
Python 算法快闪 LeetCode 编号 70 - 爬楼梯
python·算法·leetcode·职场和发展
张小姐的猫2 小时前
【Linux】多线程 —— 线程互斥
linux·运维·服务器·c++
m0_629494734 小时前
LeetCode 热题 100-----26.环形链表 II
数据结构·算法·leetcode·链表
壹号用户4 小时前
用队列实现栈
数据结构·算法
做人求其滴4 小时前
面试经典 150 题 380 274
c++·算法·面试·职场和发展·力扣