Diferencia absoluta entre el recuento de bits activado y desactivado en N

Requisito previo: función Bitset en la biblioteca STL 
Dado un número N , la tarea es encontrar la diferencia absoluta del número de bits activados y desactivados de este número dado.

Ejemplos: 

Entrada: N = 14 
Salida:
Explicación: 
La representación binaria de 14 es “1110”. 
Aquí, el número de bits activados es 3 y el número de bits no activados es 1. 
Por lo tanto, la diferencia absoluta es 2.

Entrada: N = 56 
Salida:
Explicación: La 
representación binaria de 56 es “110100”. 
Aquí el número de bits activados es 3 y el número de bits no activados es 3. 
Por lo tanto, la diferencia absoluta es 0.  

Acercarse: 

  1. Cuente el número total de bits en la representación binaria del número dado.
  2. Use la función de conjunto de bits definida en la biblioteca STL para contar la cantidad de bits establecidos de manera eficiente.
  3. Luego, restaremos los bits establecidos del número total de bits para obtener el número de bits no establecidos.

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Max size of bitset
const int sz = 64;
 
// Function to return the total bits
// in the binary representation
// of a number
int totalbits(int N)
{
    return (int)(1 + log2(N));
}
 
// Function to calculate the
// absolute difference
int absoluteDifference(int N)
{
    bitset<sz> arr(N);
 
    int total_bits = totalbits(N);
 
    // Calculate the number of
    // set bits
    int set_bits = arr.count();
 
    // Calculate the number of
    // unset bits
    int unset_bits = total_bits
                     - set_bits;
 
    int ans = abs(set_bits
                  - unset_bits);
 
    // Return the absolute difference
    return ans;
}
 
// Driver Code
int main()
{
    // Given Number
    int N = 14;
 
    // Function Call
    cout << absoluteDifference(N);
    return 0;
}

Java

// Java program for the above approach
import java.util.*;
 
class GFG{
 
// Max size of bitset
static final int sz = 64;
 
// Function to return the total bits
// in the binary representation
// of a number
static int totalbits(int N)
{
    return (1 + (int)(Math.log(N) /
                      Math.log(2)));
}
 
// Function to calculate the
// absolute difference
static int absoluteDifference(int N)
{
    int arr = N;
 
    int total_bits = totalbits(N);
 
    // Calculate the number of
    // set bits
    int set_bits = countSetBits(arr);
 
    // Calculate the number of
    // unset bits
    int unset_bits = total_bits - set_bits;
 
    int ans = Math.abs(set_bits - unset_bits);
 
    // Return the absolute difference
    return ans;
}
 
static int countSetBits(int n)
{
    int count = 0;
    while (n > 0)
    {
        n &= (n - 1);
        count++;
    }
    return count;
}
 
// Driver code
public static void main(String[] args)
{
     
    // Given Number
    int N = 14;
 
    // Function Call
    System.out.println(absoluteDifference(N));
}
}
 
// This code is contributed by offbeat

Python3

# Python3 program for the above approach
import math
 
# Max size of bitset
sz = 64
 
# Function to return the total bits
# in the binary representation
# of a number
def totalbits(N) :
 
    return (1 + (int)(math.log(N) / math.log(2)))
 
# Function to calculate the
# absolute difference
def absoluteDifference(N) :
 
    arr = N
 
    total_bits = totalbits(N)
 
    # Calculate the number of
    # set bits
    set_bits = countSetBits(arr)
 
    # Calculate the number of
    # unset bits
    unset_bits = total_bits - set_bits
 
    ans = abs(set_bits - unset_bits)
 
    # Return the absolute difference
    return ans
 
def countSetBits(n) :
 
    count = 0
    while (n > 0) :
     
        n = n & (n - 1)
        count += 1
     
    return count
 
# Given Number
N = 14
 
# Function Call
print(absoluteDifference(N))
 
# This code is contributed by divyesh072019

C#

// C# program for the above approach
using System;
class GFG{
      
    // Function to return the total bits
    // in the binary representation
    // of a number
    static int totalbits(int N)
    {
        return (1 + (int)(Math.Log(N) /
                          Math.Log(2)));
    }
      
    // Function to calculate the
    // absolute difference
    static int absoluteDifference(int N)
    {
        int arr = N;
      
        int total_bits = totalbits(N);
      
        // Calculate the number of
        // set bits
        int set_bits = countSetBits(arr);
      
        // Calculate the number of
        // unset bits
        int unset_bits = total_bits - set_bits;
      
        int ans = Math.Abs(set_bits - unset_bits);
      
        // Return the absolute difference
        return ans;
    }
      
    static int countSetBits(int n)
    {
        int count = 0;
        while (n > 0)
        {
            n &= (n - 1);
            count++;
        }
        return count;
    }
 
  // Driver code
  static void Main() {
       
        // Given Number
        int N = 14;
      
        // Function Call
        Console.WriteLine(absoluteDifference(N));
  }
}
 
// This code is contributed by divyeshrabadiya07

Javascript

<script>
 
    // Javascript program for the above approach
     
    // Function to return the total bits
    // in the binary representation
    // of a number
    function totalbits(N)
    {
        return (1 + parseInt(Math.log(N) / Math.log(2), 10));
    }
       
    // Function to calculate the
    // absolute difference
    function absoluteDifference(N)
    {
        let arr = N;
       
        let total_bits = totalbits(N);
       
        // Calculate the number of
        // set bits
        let set_bits = countSetBits(arr);
       
        // Calculate the number of
        // unset bits
        let unset_bits = total_bits - set_bits;
       
        let ans = Math.abs(set_bits - unset_bits);
       
        // Return the absolute difference
        return ans;
    }
       
    function countSetBits(n)
    {
        let count = 0;
        while (n > 0)
        {
            n &= (n - 1);
            count++;
        }
        return count;
    }
     
    // Given Number
    let N = 14;
 
    // Function Call
    document.write(absoluteDifference(N));
     
</script>
Producción: 

2

 

Complejidad de tiempo: O (log N)
 

Publicación traducida automáticamente

Artículo escrito por shauryarehangfg y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *