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;
}
相关推荐
手写码匠几秒前
手写 GraphRAG:从零实现图增强检索增强生成系统
人工智能·深度学习·算法·aigc
BomanGe16 分钟前
NSK重载高刚性滚珠丝杠技术详解
经验分享·算法·规格说明书
赴生-41 分钟前
C++进阶 C++11(下)
开发语言·c++
有点。1 小时前
C++(贪心算法一)
c++·贪心算法
Matrix_111 小时前
手机里的计算摄影:广角形变校正算法
人工智能·算法·智能手机·计算摄影
WBluuue1 小时前
数据结构与算法:有序表(二):跳表
数据结构·c++·算法·skiplist
赴生-2 小时前
C++进阶 异常
开发语言·c++
x138702859572 小时前
c语言中srtlen(指针使用计算字符长度)、传值和传址调用
c语言·开发语言·算法·visual studio
海兰2 小时前
【实用程序】电商销售分析仪表盘 — 从零搭建一个AI参与的全栈数据洞察系统
人工智能·学习·算法
凡人叶枫3 小时前
Effective C++ 条款28:避免使用 handles 指向对象内部
linux·服务器·开发语言·c++·嵌入式开发