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;
}
相关推荐
田梓燊几秒前
leetcode 189
算法·leetcode·职场和发展
今晚打老虎1 分钟前
限时回归了
c++
老四啊laosi1 分钟前
[C++进阶] 22. unordered_set && unordered_map使用
c++·unordered_map·unordered_set
宵时待雨5 分钟前
C++笔记归纳20:智能指针
开发语言·c++·笔记
wuweijianlove14 分钟前
算法复杂度的理论边界与实验验证研究的技术3
算法
rm6fEx0Z720 分钟前
AUC 与 GAUC:从全局排序到用户内排序的理解
人工智能·算法·机器学习
minji...22 分钟前
Linux 多线程(四)线程等待,线程分离,线程管理,C++多线程,pthread库
linux·运维·开发语言·网络·c++·算法
H_BB28 分钟前
DFS实现回溯算法
数据结构·c++·算法·深度优先
汀、人工智能29 分钟前
[特殊字符] 第17课:滑动窗口最大值
数据结构·算法·数据库架构·图论·bfs·滑动窗口最大值
楼田莉子30 分钟前
设计模式:设计模式的相关概念与原则
c++·学习·设计模式