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

题目

给定一个长度为 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);
        }
    }
}
posted @ 2024-08-01 11:35  火车驶向云外0218  阅读(77)  评论(0)    收藏  举报