Número odioso es un número no negativo que tiene un número impar de 1 en su expansión binaria. Los primeros números odiosos son, por lo tanto, 1, 2, 4, 7, 8, 11, 13, 14, 16, 19…
Dado un número, comprueba si es un número odioso o no.
Ejemplos:
Input : 16 Output : Odious Number Explanation: Binary expansion of 16 = 10000, having number of 1s =1 i.e odd. Input : 23 Output : Not odious number Explanation: Binary expansion of 23 is 10111, the number of 1s in this is 4 i.e even.
1) Cuente los bits establecidos en el número dado .
2) Devuelve verdadero si el conteo es impar, falso en caso contrario.
C++
// C/C++ program to check if a number is // Odious Number or not #include <iostream> using namespace std; #include <math.h> /* Function to get no of set bits in binary representation of passed binary no. Please refer below for details of this function : https://www.geeksforgeeks.org/count-set-bits-in-an-integer/ */ int countSetBits(int n) { unsigned int count = 0; while (n) { n &= (n-1) ; count++; } return count; } // Check if number is odious or not int checkOdious(int n) { return (countSetBits(n) % 2 == 1); } // Driver Code int main() { int num = 32; if (checkOdious(num)) cout << "Yes"; else cout << "No"; return 0; }
Java
// Java program to check if a number is // Odious Number or not import java.io.*; import java.math.*; class GFG { /* Function to get no of set bits in binary representation of passed binary no. Please refer below for details of this function : https://www.geeksforgeeks.org/count-set-bits-in-an-integer/ */ static int countSetBits(int n) { int count = 0; while (n!=0) { n &= (n-1) ; count++; } return count; } // Check if number is odious or not static boolean checkOdious(int n) { return (countSetBits(n) % 2 == 1); } // Driver Code public static void main(String args[]) { int num = 32; if (checkOdious(num)) System.out.println("Yes"); else System.out.println("No"); } } /*This code is contributed by Nikita Tiwari.*/
Python3
# Python 3 program to check if a number is # Odious Number or not # Function to get no of set bits in binary # representation of passed binary no. # Please refer below for details of this function : # https://www.geeksforgeeks.org/count-set-bits-in-an-integer def countSetBits(n) : count = 0 while (n) : n = n & (n-1) count = count + 1 return count # Check if number is odious or not def checkOdious(n) : return (countSetBits(n) % 2 == 1) # Driver Code num = 32 if (checkOdious(num)) : print("Yes") else : print("No") # This code is contributed by Nikita Tiwari.
C#
// C# program to check if a number // is Odious Number or not using System; class GFG { /* Function to get no of set bits in binary representation of passed binary no. Please refer below for details of this function : https://www.geeksforgeeks.org/count-set-bits-in-an-integer/ */ static int countSetBits(int n) { int count = 0; while (n != 0) { n &= (n - 1) ; count++; } return count; } // Check if number is odious or not static bool checkOdious(int n) { return (countSetBits(n) % 2 == 1); } // Driver Code public static void Main() { int num = 32; if (checkOdious(num)) Console.Write("Yes"); else Console.Write("No"); } } /*This code is contributed by vt_m.*/
PHP
<?php // PHP program to check if a number // is Odious Number or not // Function to get no of // set bits in binary function countSetBits($n) { $count = 0; while ($n) { $n &= ($n - 1) ; $count++; } return $count; } // Check if number is odious or not function checkOdious($n) { return (countSetBits($n) % 2 == 1); } // Driver Code $num = 32; if (checkOdious($num)) echo "Yes"; else echo "No"; // This code is contributed by mits ?>
Javascript
<script> // JavaScript program to check if a number is // Odious Number or not /* Function to get no of set bits in binary representation of passed binary no. Please refer below for details of this function : https://www.geeksforgeeks.org/count-set-bits-in-an-integer/ */ function countSetBits(n) { let count = 0; while (n!=0) { n &= (n-1) ; count++; } return count; } // Check if number is odious or not function checkOdious(n) { return (countSetBits(n) % 2 == 1); } // Driver code let num = 32; if (checkOdious(num)) document.write("Yes"); else document.write("No"); </script>
Producción :
Yes
Complejidad de tiempo: O(logn)
Complejidad de espacio: O(1)