当前位置: 首页 > news >正文

【算法】【位运算】acwing算法基础 801. 二进制中1的个数

题目

给定一个长度为 n 的数列,请你求出数列中每个数的二进制表示中 1 的个数。

输入格式

第一行包含整数 n。

第二行包含 n 个整数,表示整个数列。

输出格式 共一行,包含 n 个整数,其中的第 个数表示数列中的第 i 个数的二进制表示中 1 的个数。

数据范围

1≤n≤100000

0≤数列中元素的值≤109

输入样例:

5

1 2 3 4 5

输出样例:

1 1 2 1 2

来源:acwing算法基础 801. 二进制中1的个数


纯代码

#include<bits/stdc++.h>
using namespace std;

const int N = 1e5 + 1;
int a[N];

int i_t (int a)
{
	int sum = 0;
	while (a != 0)
	{	
		sum += a % 2;
		a /= 2;
	}	
	return sum; 
}
int main()
{
    int n;
    cin >> n;
    
    for (int i = 0; i < n; i ++) 
	{
		scanf ("%d", &a[i]);
		cout << i_t (a[i]) << " ";
	}
	return 0;
}

题解(带注释)

#include<bits/stdc++.h>  // 包含常用的头文件,如iostream、vector、algorithm等
using namespace std;

const int N = 1e5 + 1;  // 定义常量N,表示数组的最大大小
int a[N];  // 定义一个大小为N的数组a,用于存储输入的数据

// 函数i_t:计算整数a的二进制表示中1的个数
int i_t(int a)
{
    int sum = 0;  // 初始化计数器sum,用于记录1的个数
    while (a != 0)  // 当a不为0时,继续循环
    {	
        sum += a % 2;  // 取a的最低位(0或1),并加到sum中
        a /= 2;  // 将a右移一位,相当于去掉最低位
    }	
    return sum;  // 返回1的个数
}

int main()
{
    int n;  // 定义变量n,表示输入数据的个数
    cin >> n;  // 输入n的值
    
    // 循环读取n个整数,并计算每个整数的二进制表示中1的个数
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);  // 读取第i个整数并存储到数组a中
        cout << i_t(a[i]) << " ";  // 调用i_t函数计算1的个数,并输出结果
    }
    
    return 0;  // 程序正常结束
}

相关文章:

  • 计算机毕业设计PySpark+Hadoop+Hive机票预测 飞机票航班数据分析可视化大屏 航班预测系统 机票爬虫 飞机票推荐系统 大数据毕业设计
  • 开启AI绘画的魔法大门!探索Stable Diffusion的无限魅力~
  • Python学习笔记 ver1.0
  • vue3 ref/reactive 修改数组的方法
  • 数据结构——红黑树的实现
  • Github Action自动流翻译README文档【CI/CD】
  • npm install 失败
  • 利用盲注技术获取表、列、具体数据
  • 英码科技基于昇腾算力实现DeepSeek离线部署
  • 日本股市概览:主要指数、经济泡沫与现代市场趋势(中英双语)
  • 深入理解C#结构型设计模式:类适配器与对象适配器
  • 公网IP、私网IP、动态IP、静态IP
  • ubuntu 实时系统安装Nvidia驱动
  • 网络安全 | 安全信息与事件管理(SIEM)系统的选型与实施
  • 08模拟法 + 技巧 + 数学 + 缓存(D1_模拟法)
  • 信息收集-Web应用JS架构URL提取数据匹配Fuzz接口WebPack分析自动化
  • 基于JavaWeb开发的Java+Spring+vue+element实现旅游信息管理平台系统
  • DeepSeek 可视化部署手册:环境配置与运维指南
  • C++ STL容器之list的使用及复现
  • 一个数组,只考虑速度,怎么获取最大值以及最小值?
  • 普京批准俄方与乌克兰谈判代表团人员名单
  • 马上评|安排见义勇为学生补考,善意与善意的双向奔赴
  • 杭勇已任常州市政协党组成员,此前任常州市委常委、秘书长
  • 宝通科技:与宇树合作已签约,四足机器人在工业场景落地是重点商业化项目
  • 深圳中院回应“退休夫妻月入1.2万负债1.2亿”:其自述因经营不善负债
  • 北京航空航天大学首个海外创新研究院落户巴西