El problema es verificar si la representación decimal del número binario dado es divisible por 10 o no. Tenga cuidado, el número podría ser muy grande y no encajar incluso en long long int. El enfoque debe ser tal que haya cero o un número mínimo de operaciones de multiplicación y división. No hay 0 a la izquierda en la entrada.
Ejemplos:
Input : 101000 Output : Yes (101000)2 = (40)10 and 40 is divisible by 10. Input : 11000111001110 Output : Yes
Enfoque: En primer lugar, necesitamos saber que el último dígito de pow(2, i) = 2, 4, 8, 6 si i % 4 es igual a 1, 2, 3, 0 respectivamente, donde i es mayor que igual a 1. Entonces, en la representación binaria necesitamos saber la posición del dígito ‘1’ de la derecha, para saber la potencia perfecta de 2 con la que se va a multiplicar. Esto nos ayudará a obtener el último dígito de la potencia perfecta requerida de 2. Podemos sumar estos dígitos y luego verificar si el último dígito de la suma es 0 o no, lo que implica que el número es divisible por 10 o no. Tenga en cuenta que si el último dígito en la representación binaria es ‘1’, entonces representa un número impar y, por lo tanto, no es divisible por 10.
C++
// C++ implementation to check whether decimal // representation of given binary number is // divisible by 10 or not #include <bits/stdc++.h> using namespace std; // function to check whether decimal representation // of given binary number is divisible by 10 or not bool isDivisibleBy10(string bin) { int n = bin.size(); // if last digit is '1', then // number is not divisible by 10 if (bin[n-1] == '1') return false; // to accumulate the sum of last digits // in perfect powers of 2 int sum = 0; // traverse from the 2nd last up to 1st digit // in 'bin' for (int i=n-2; i>=0; i--) { // if digit in '1' if (bin[i] == '1') { // calculate digit's position from // the right int posFromRight = n - i - 1; // according to the digit's position, // obtain the last digit of the applicable // perfect power of 2 if (posFromRight % 4 == 1) sum = sum + 2; else if (posFromRight % 4 == 2) sum = sum + 4; else if (posFromRight % 4 == 3) sum = sum + 8; else if (posFromRight % 4 == 0) sum = sum + 6; } } // if last digit is 0, then // divisible by 10 if (sum % 10 == 0) return true; // not divisible by 10 return false; } // Driver program to test above int main() { string bin = "11000111001110"; if (isDivisibleBy10(bin)) cout << "Yes"; else cout << "No"; return 0; }
Java
// Java implementation to check whether decimal // representation of given binary number is // divisible by 10 or not import java.util.*; class GFG { // function to check whether decimal // representation of given binary number // is divisible by 10 or not static boolean isDivisibleBy10(String bin) { int n = bin.length(); // if last digit is '1', then // number is not divisible by 10 if (bin.charAt(n - 1) == '1') return false; // to accumulate the sum of last // digits in perfect powers of 2 int sum = 0; // traverse from the 2nd last up to // 1st digit in 'bin' for (int i = n - 2; i >= 0; i--) { // if digit in '1' if (bin.charAt(i) == '1') { // calculate digit's position // from the right int posFromRight = n - i - 1; // according to the digit's // position, obtain the last // digit of the applicable // perfect power of 2 if (posFromRight % 4 == 1) sum = sum + 2; else if (posFromRight % 4 == 2) sum = sum + 4; else if (posFromRight % 4 == 3) sum = sum + 8; else if (posFromRight % 4 == 0) sum = sum + 6; } } // if last digit is 0, then // divisible by 10 if (sum % 10 == 0) return true; // not divisible by 10 return false; } /* Driver program to test above function */ public static void main(String[] args) { String bin = "11000111001110"; if (isDivisibleBy10(bin)) System.out.print("Yes"); else System.out.print("No"); } } // This code is contributed by Arnav Kr. Mandal.
Python
# Python implementation to check whether # decimal representation of given binary # number is divisible by 10 or not # function to check whether decimal # representation of given binary number # is divisible by 10 or not def isDivisibleBy10(bin) : n = len(bin) #if last digit is '1', then # number is not divisible by 10 if (bin[n - 1] == '1') : return False # to accumulate the sum of last # digits in perfect powers of 2 sum = 0 #traverse from the 2nd last up to # 1st digit in 'bin' i = n - 2 while i >= 0 : # if digit in '1' if (bin[i] == '1') : # calculate digit's position # from the right posFromRight = n - i - 1 #according to the digit's # position, obtain the last # digit of the applicable # perfect power of 2 if (posFromRight % 4 == 1) : sum = sum + 2 else if (posFromRight % 4 == 2) : sum = sum + 4 else if (posFromRight % 4 == 3) : sum = sum + 8 else if (posFromRight % 4 == 0) : sum = sum + 6 i = i - 1 # if last digit is 0, then # divisible by 10 if (sum % 10 == 0) : return True # not divisible by 10 return False # Driver program to test above function bin = "11000111001110" if (isDivisibleBy10(bin)== True) : print("Yes") else : print("No") # This code is contributed by Nikita Tiwari.
C#
// C# implementation to check whether decimal // representation of given binary number is // divisible by 10 or not using System; class GFG { // function to check whether decimal // representation of given binary number // is divisible by 10 or not static bool isDivisibleBy10(String bin) { int n = bin.Length; // if last digit is '1', then // number is not divisible by 10 if (bin[n - 1] == '1') return false; // to accumulate the sum of last // digits in perfect powers of 2 int sum = 0; // traverse from the 2nd last up to // 1st digit in 'bin' for (int i = n - 2; i >= 0; i--) { // if digit in '1' if (bin[i] == '1') { // calculate digit's position // from the right int posFromRight = n - i - 1; // according to the digit's // position, obtain the last // digit of the applicable // perfect power of 2 if (posFromRight % 4 == 1) sum = sum + 2; else if (posFromRight % 4 == 2) sum = sum + 4; else if (posFromRight % 4 == 3) sum = sum + 8; else if (posFromRight % 4 == 0) sum = sum + 6; } } // if last digit is 0, then // divisible by 10 if (sum % 10 == 0) return true; // not divisible by 10 return false; } /* Driver program to test above function */ public static void Main() { String bin = "11000111001110"; if (isDivisibleBy10(bin)) Console.Write("Yes"); else Console.Write("No"); } } // This code is contributed by Sam007
PHP
<?php // PHP implementation to // check whether decimal // representation of given // binary number is divisible // by 10 or not // function to check whether // decimal representation of // given binary number is // divisible by 10 or not function isDivisibleBy10($bin) { $n = strlen($bin); // if last digit is '1', // then number is not // divisible by 10 if ($bin[$n - 1] == '1') return false; // to accumulate the sum // of last digits in // perfect powers of 2 $sum = 0; // traverse from the 2nd // last up to 1st digit // in 'bin' for ($i = $n - 2; $i >= 0; $i--) { // if digit in '1' if ($bin[$i] == '1') { // calculate digit's // position from the right $posFromRight = $n - $i - 1; // according to the digit's // position, obtain the last // digit of the applicable // perfect power of 2 if ($posFromRight % 4 == 1) $sum = $sum + 2; else if ($posFromRight % 4 == 2) $sum = $sum + 4; else if ($posFromRight % 4 == 3) $sum = $sum + 8; else if ($posFromRight % 4 == 0) $sum = $sum + 6; } } // if last digit is 0, then // divisible by 10 if ($sum % 10 == 0) return true; // not divisible by 10 return false; } // Driver Code $bin = "11000111001110"; if(isDivisibleBy10($bin)) echo "Yes"; else echo "No"; // This code is contributed by mits. ?>
Javascript
<script> // Javascript implementation to check whether decimal // representation of given binary number is // divisible by 10 or not // function to check whether decimal // representation of given binary number // is divisible by 10 or not function isDivisibleBy10(bin) { let n = bin.length; // if last digit is '1', then // number is not divisible by 10 if (bin[n - 1] == '1') return false; // to accumulate the sum of last // digits in perfect powers of 2 let sum = 0; // traverse from the 2nd last up to // 1st digit in 'bin' for (let i = n - 2; i >= 0; i--) { // if digit in '1' if (bin[i] == '1') { // calculate digit's position // from the right let posFromRight = n - i - 1; // according to the digit's // position, obtain the last // digit of the applicable // perfect power of 2 if (posFromRight % 4 == 1) sum = sum + 2; else if (posFromRight % 4 == 2) sum = sum + 4; else if (posFromRight % 4 == 3) sum = sum + 8; else if (posFromRight % 4 == 0) sum = sum + 6; } } // if last digit is 0, then // divisible by 10 if (sum % 10 == 0) return true; // not divisible by 10 return false; } // driver function let bin = "11000111001110"; if (isDivisibleBy10(bin)) document.write("Yes"); else document.write("No"); </script>
Producción:
Yes
Método: convierta la string binaria dada en decimal usando la función int y luego verifique si es divisible por 10 o no usando la división de módulo.
Python3
# Python code to check # decimal representation of # a given binary string is # divisible by 10 or not str1 = "101000" # converting binary string in to # decimal number using int function decnum = int(str1, 2) # checking if number is divisible by 10 # or not if divisible print yes else no if decnum % 10 == 0: print("Yes") else: print("No") # this code is contributed by gangarajula laxmi
Java
// java code to check // decimal representation of // a given binary string is // divisible by 10 or not import java.io.*; class GFG { public static void main (String[] args) { String s="1010"; //converting binary string in to //decimal number using Convert.ToInt function int n=Integer.parseInt(s,2); if (n%10==0) { System.out.println("Yes"); } else { System.out.println("No"); } } }
Javascript
<script> // JavaScript code for the above approach str1 = "101000" // converting binary string in to // decimal number using int function decnum = Number.parseInt(str1, 2) // checking if number is divisible by 10 // or not if divisible print yes else no if (decnum % 10 == 0) document.write("Yes") else document.write("No") // This code is contributed by Potta Lokesh </script>
C#
// C# code to check // decimal representation of // a given binary string is // divisible by 10 or not using System; public class GFG{ static public void Main (){ string s="1010"; //converting binary string in to //decimal number using Convert.ToInt function int n=Convert.ToInt32(s,2); if (n%10==0) { Console.Write("Yes"); } else { Console.Write("No"); } } }
Yes
Complejidad temporal: O(n), donde n es el número de dígitos del número binario.
Este artículo es una contribución de Ayush Jauhari . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA