Número de dígitos antes del punto decimal en la división de dos números

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:
100 / 4 = 25 y número de dígitos en 25 = 2.
Entrada: a = 100000, b = 10 
Salida:
 

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>
Producción: 

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>
Producción: 

2

 

Complejidad temporal: O(log 10 (a/ b))

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por spp____ 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 *