Dados dos enteros a y b . La tarea es encontrar el número de dígitos antes del punto decimal en a/b .
Ejemplos:
Entrada: a = 100, b = 4
Salida: 2
100 / 4 = 25 y número de dígitos en 25 = 2.
Entrada: a = 100000, b = 10
Salida: 5
Enfoque ingenuo : divida los dos números y luego encuentre el número de dígitos en la división. Toma el valor absoluto de la división para encontrar el número de dígitos.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; // Function to return the number of digits // before the decimal in a / b int countDigits(int a, int b) { int count = 0; // Absolute value of a / b int p = abs(a / b); // If result is 0 if (p == 0) return 1; // Count number of digits in the result while (p > 0) { count++; p = p / 10; } // Return the required count of digits return count; } // Driver code int main() { int a = 100; int b = 10; cout << countDigits(a, b); return 0; }
Java
// Java implementation of the approach class GFG { // Function to return the number of digits // before the decimal in a / b static int countDigits(int a, int b) { int count = 0; // Absolute value of a / b int p = Math.abs(a / b); // If result is 0 if (p == 0) return 1; // Count number of digits in the result while (p > 0) { count++; p = p / 10; } // Return the required count of digits return count; } // Driver code public static void main(String args[]) { int a = 100; int b = 10; System.out.print(countDigits(a, b)); } }
Python
# Python 3 implementation of the approach # Function to return the number of digits # before the decimal in a / b def countDigits(a, b): count = 0 # Absolute value of a / b p = abs(a // b) # If result is 0 if (p == 0): return 1 # Count number of digits in the result while (p > 0): count = count + 1 p = p // 10 # Return the required count of digits return count # Driver code a = 100 b = 10 print(countDigits(a, b))
C#
// C# implementation of the approach using System; class GFG { // Function to return the number of digits // before the decimal in a / b static int countDigits(int a, int b) { int count = 0; // Absolute value of a / b int p = Math.Abs(a / b); // If result is 0 if (p == 0) return 1; // Count number of digits in the result while (p > 0) { count++; p = p / 10; } // Return the required count of digits return count; } // Driver code public static void Main() { int a = 100; int b = 10; Console.Write(countDigits(a, b)); } }
PHP
<?php // PHP implementation of the approach // Function to return the number of digits // before the decimal in a / b function countDigits($a, $b) { $count = 0; // Absolute value of a / b $p = abs($a / $b); // If result is 0 if ($p == 0) return 1; // Count number of digits in the result while ($p > 0) { $count++; $p = (int)($p / 10); } // Return the required count of digits return $count; } // Driver code $a = 100; $b = 10; echo countDigits($a, $b); ?>
Javascript
<script> // Javascript implementation of the approach // Function to return the number of digits // before the decimal in a / b function countDigits(a, b) { var count = 0; // Absolute value of a / b var p = Math.abs(parseInt(a / b)); // If result is 0 if (p == 0) return 1; // Count number of digits in the result while (p > 0) { count++; p = parseInt(p / 10); } // Return the required count of digits return count; } // Driver code var a = 100; var b = 10; document.write(countDigits(a, b)); // This code is contributed by rrrtnx. </script>
2
Complejidad temporal: O(log 10 (a/ b))
Espacio Auxiliar: O(1)
Enfoque eficiente: para contar el número de dígitos en a/b , podemos usar la fórmula:
piso (log 10 (a) – log 10 (b)) + 1
Aquí ambos números deben ser enteros positivos. Para esto podemos tomar los valores absolutos de a y b .
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; // Function to return the number of digits // before the decimal in a / b int countDigits(int a, int b) { // Return the required count of digits return floor(log10(abs(a)) - log10(abs(b))) + 1; } // Driver code int main() { int a = 100; int b = 10; cout << countDigits(a, b); return 0; }
Java
// Java implementation of the approach class GFG { // Function to return the number of digits // before the decimal in a / b public static int countDigits(int a, int b) { double digits = Math.log10(Math.abs(a)) - Math.log10(Math.abs(b)) + 1; // Return the required count of digits return (int)Math.floor(digits); } // Driver code public static void main(String[] args) { int a = 100; int b = 10; System.out.print(countDigits(a, b)); } }
Python
# Python3 implementation of the approach import math # Function to return the number of digits # before the decimal in a / b def countDigits(a, b): # Return the required count of digits return math.floor(math.log10(abs(a)) - math.log10(abs(b))) + 1 # Driver code a = 100 b = 10 print(countDigits(a, b))
C#
// C# implementation of the approach using System; class GFG { // Function to return the number of digits // before the decimal in a / b public static int countDigits(int a, int b) { double digits = Math.Log10(Math.Abs(a)) - Math.Log10(Math.Abs(b)) + 1; // Return the required count of digits return (int)Math.Floor(digits); } // Driver code static void Main() { int a = 100; int b = 10; Console.Write(countDigits(a, b)); } }
PHP
<?php // PHP implementation of the approach // Function to return the number of digits // before the decimal in a / b function countDigits($a, $b) { // Return the required count of digits return floor(log10(abs($a)) - log10(abs($b))) + 1; } // Driver code $a = 100; $b = 10; echo countDigits($a, $b); ?>
Javascript
<script> // Javascript implementation of the approach // Function to return the number of digits // before the decimal in a / b function countDigits(a, b) { // Return the required count of digits return Math.floor((Math.log(Math.abs(a))/Math.log(10)) - (Math.log(Math.abs(b))/Math.log(10))) + 1; } // Driver code var a = 100; var b = 10; document.write(countDigits(a, b)); // This code is contributed by rutvik_56. </script>
2
Complejidad temporal: O(log 10 (a/ b))
Espacio Auxiliar: O(1)