首页 > 编程语言 >三种语言实现计算二进制中1的个数(C++/Python/Java)

三种语言实现计算二进制中1的个数(C++/Python/Java)

时间:2024-08-01 11:42:27浏览次数:15  
标签:Java 数列 二进制 Python 个数 C++ int while ans

题目

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

输入格式

第一行包含整数 n。

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

输出格式

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

数据范围

1≤n≤100000,
0≤数列中元素的值≤1e9

输入样例:

5
1 2 3 4 5

输出样例:

1 1 2 1 2

C++

#include <bits/stdc++.h>
 
using namespace std;
 
int main()
{
    int n;
    cin >> n ;
    while(n--)
    {
        int x;
        cin >> x;
        int ans = 0;
        while(x)
        {
            ans += x & 1;
            x = x >> 1;
        }
        cout << ans << " ";
    }
    
}

Python

n = int(input())
a = [int(x) for x in input().split()]

for i in range(n):
    ans = 0
    x = a[i]
    while x > 0:
        ans += x & 1
        x >>= 1
    print(ans, end=" ")

Java

import java.util.*;
 
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        while(n > 0)
        {
            n -= 1;
            int x = sc.nextInt();
            int ans = 0;
            while(x > 0)
            {
                ans += x & 1;
                x = x >> 1;
            }
            System.out.printf("%d ",ans);
        }
    }
}

标签:Java,数列,二进制,Python,个数,C++,int,while,ans
From: https://www.cnblogs.com/fang0218/p/18336327

相关文章

  • 三种语言实现双指针判断子序列(C++/Python/Java)
    题目给定一个长度为n的整数序列a1,a2,…,an以及一个长度为m的整数序列b1,b2,…,bm。请你判断a序列是否为b序列的子序列。子序列指序列的一部分项按原有次序排列而得的序列,例如序列{a1,a3,a5}是序列{a1,a2,a3,a4,a5}的一个子序列。输入格式第一行包含两个整数......
  • java笔记2
    4.数组笔记数组概念数组是一种基本的数据结构,用于存储固定大小的相同类型的元素序列。在Java中,数组是一种对象,它实现了java.lang.Cloneable和java.io.Serializable接口。声明数组:int[]intArray;初始化数组:intArray=newint[10];//创建一个长度为10的整型数组......
  • C++竞赛初阶L1-05-第四单元-判断语句(第19课)100003: 最大数输出
    题目内容输入三个整数,输出最大的数。输入格式输入为一行,包含三个整数,数与数之间以一个空格分开。输出格式输出一行,包含一个整数,即最大的整数。样例1输入102056样例1输出56程序代码输出:#include<bits/stdc++.h>usingnamespacestd;intmain(){ inta,b,c......
  • C++程序中的类型转换与进程异常退出血案复盘
    在C++编程中,类型转换是一个常见的操作,它允许程序员将一个数据类型转换为另一个数据类型。然而,不恰当的类型转换可能会导致未定义的行为,甚至引发进程异常退出。本文将深入分析一段C++代码,探讨其中由于类型转换不当导致的潜在问题,并解释为何这种类型转换可能引发进程异常退出......
  • 【计算机毕业设计】ssm398基于javaweb的酒店预订管理系统+vue
    使用旧方法对酒店预订信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在酒店预订信息的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的酒店预订管理系统管理员功能有个人中心,用户管理,房间类型管......
  • Java初识
    JDK、JRE和JVM​1.JDK指的是JavaDevelopmentKit,它是一个开发Java应用程序所需的软件开发工具包。JDK包括Java编译器、Java虚拟机、Java类库等必要组件,以及用于开发、调试和运行Java应用程序的其他工具。使用JDK可以帮助开发人员编写、测试和部署Java应用程序,以及运行Java应......
  • 三种语言实现双指针解决数组元素的目标和(C++/Python/Java)
    题目给定两个升序排序的有序数组A和B,以及一个目标值x。数组下标从0开始。请你求出满足A[i]+B[j]=x的数对(i,j)。数据保证有唯一解。输入格式第一行包含三个整数n,m,x,分别表示A的长度,B的长度以及目标值x。第二行包含n个整数,表示数组A。第三行包含m个整数......
  • C++对象析构顺序问题——由QObject::desroyed展开的思考
    C++对象析构顺序问题——由QObject::desroyed展开的思考C++析构函数执行的顺序是最先执行继承链最末端的子类的,最后执行顶层的基类的。而QObject::destroyed(QObject*obj=nullptr)信号在Qt文档中说是“在obj被完全析构时之前立即触发,并且不会被阻塞”。这里的“完全析......
  • JavaScript入门须知
    一、JavaScript概念1.javascript是一门跨平台,面向对象的脚本语言,用来控制网页行为,可使网页交互2.java和js完全不一样,无论是概念还是设计都是完全不一样的,但是它们的基础语法相似。3.在1995年由BrendanErich发明,于1997年成为ECMA的标准4.ECMA欧洲协会标准,ECMAScript(ES6)是......
  • Java I/O的进化:从I/O到NIO
    引言JavaI/O(Input/Output)是Java程序中处理输入和输出的基本方式,包括文件操作、网络通信等。随着Java平台的发展,JavaNIO(NewInput/Output)作为JavaI/O的一个重要补充,提供了更为高效和灵活的I/O操作方式。本文将深入讲解JavaI/O模型、NIO的原理,以及如何在实际应用中使用N......