三種語言實現計算二進位制中1的個數(C++/Python/Java)

火车驶向云外0218發表於2024-08-01

題目

給定一個長度為 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);
        }
    }
}

相關文章