📜  两个数乘积中的位数

📅  最后修改于: 2021-05-06 20:31:45             🧑  作者: Mango

给定两个整数ab 。问题是要找到这两个整数的乘积中的位数。
例子:

Input : a = 12, b = 4
Output : 2
12 * 4 = 48 (2 digits)

Input : a = 33, b = -24
Output : 3
33 * -24 = -792 (3 digits)

天真的方法:将两个数字相乘,然后使用循环构造查找乘积中的数字位数。取乘积的绝对值以查找数字位数。

C++
// C++ implementation to count number of digits
// in the product of two numbers
#include 
 
using namespace std;
 
// function to count number of digits
// in the product of two numbers
int countDigits(int a, int b)
{
    int count = 0;   
     
    // absolute value of the
    // product of two numbers
    int p = abs(a*b);
     
    // if product is 0
    if (p == 0)   
        return 1;
     
    // count number of digits in the product 'p'   
    while (p > 0)   
    {
        count++;
        p = p / 10;
    }
     
    // required count of digits   
    return count;
}
 
// Driver program to test above
int main()
{
    int a = 33;
    int b = -24;
    cout << "Number of digits = "
         << countDigits(a,b);
    return 0;
}


Java
// Java implementation to count
// number of digits in the product
// of two numbers
import java.io.*;
import java.math.*;
 
class GFG {
     
    // function to count number of digits
    // in the product of two numbers
    static int countDigits(int a, int b)
    {
        int count = 0;
         
        // absolute value of the
        // product of two numbers
        int p = Math.abs(a * b);
         
        // if product is 0
        if (p == 0)
            return 1;
         
        // count number of digits in
        // the product 'p'
        while (p > 0)
        {
            count++;
            p = p / 10;
        }
         
        // required count of digits
        return count;
    }
     
    // Driver program to test above
    public static void main(String args[])
    {
        int a = 33;
        int b = -24;
        System.out.println("Number of digits = "
                           + countDigits(a, b));
    }
}
 
/*This code is contributed by Nikita Tiwari.*/


Python3
# Python 3 implementation to count
# number of digits in the product
# of two numbers
 
# function to count number of digits
# in the product of two numbers
def countDigits(a, b) :
    count = 0
     
    # absolute value of the
    # product of two numbers
    p = abs(a * b)
     
    # if product is 0
    if (p == 0) :
        return 1
     
    # count number of digits
    # in the product 'p'
    while (p > 0) :
        count = count + 1
        p = p // 10
     
     
    # required count of digits
    return count
 
 
# Driver program to test above
a = 33
b = -24
print("Number of digits = ",
       countDigits(a,b))
 
# This code is contributed by Nikita Tiwari.


C#
// C# implementation to count
// number of digits in the product
// of two numbers
using System;
 
class GFG {
     
    // function to count number of digits
    // in the product of two numbers
    static int countDigits(int a, int b)
    {
        int count = 0;
 
        // absolute value of the
        // product of two numbers
        int p = Math.Abs(a * b);
 
        // if product is 0
        if (p == 0)
            return 1;
 
        // count number of digits in
        // the product 'p'
        while (p > 0) {
            count++;
            p = p / 10;
        }
 
        // required count of digits
        return count;
    }
 
    // Driver program to test above
    public static void Main()
    {
        int a = 33;
        int b = -24;
        Console.WriteLine("Number of digits = " +
                              countDigits(a, b));
    }
}
 
// This code is contributed by Sam007


PHP
 0)
    {
        $count++;
        $p = (int)($p / 10);
    }
     
    // required count of digits
    return $count;
}
 
// Driver Code
$a = 33;
$b = -24;
echo "Number of digits = " .
        countDigits($a, $b);
 
// This code is contributed by mits
?>


Javascript


C++
// C++ implementation to count number of digits
// in the product of two numbers
#include 
 
using namespace std;
 
// function to count number of digits
// in the product of two numbers
int countDigits(int a, int b)
{
    // if either of the number is 0, then
    // product will be 0
    if (a == 0 || b == 0)
        return 1;
         
    // required count of digits           
    return floor(log10(abs(a)) + log10(abs(b))) + 1;   
}
 
// Driver program to test above
int main()
{
    int a = 33;
    int b = -24;
    cout << countDigits(a,b);
    return 0;
}


Java
// JAVA Code for Number of digits
// in the product of two numbers
class GFG {
     
    // function to count number of digits
    // in the product of two numbers
    public static int countDigits(int a, int b)
    {
        // if either of the number is 0, then
        // product will be 0
        if (a == 0 || b == 0)
            return 1;
              
        // required count of digits           
        return (int)Math.floor(Math.log10(Math.abs(a)) +
                            Math.log10(Math.abs(b))) + 1;   
    }
     
    /* Driver program to test above function */
    public static void main(String[] args)
    {
        int a = 33;
        int b = -24;
        System.out.print(countDigits(a,b));
    }
}
// This code is contributed by Arnav Kr. Mandal.


Python3
# Python 3 implementation to count
# number of digits in the product
# of two numbers
import math
 
# function to count number of digits
# in the product of two numbers
def countDigits(a, b) :
     
    # if either of the number is 0,
    # then product will be 0
    if (a == 0 or b == 0) :
        return 1
         
    # required count of digits        
    return math.floor(math.log10(abs(a)) +
                   math.log10(abs(b))) + 1
 
 
# Driver program to test above
a = 33
b = -24
print(countDigits(a, b))
 
# This code is contributed by Nikita Tiwari.


C#
// C# Code for Number of digits
// in the product of two numbers
using System;
 
class GFG {
     
    // function to count number of
    // digits in the product of two
    // numbers
    public static int countDigits(int a,
                                  int b)
    {
        // if either of the number is 0,
        // then product will be 0
        if (a == 0 || b == 0)
            return 1;
             
        // required count of digits        
        return (int)Math.Floor(
                 Math.Log10(Math.Abs(a))
          + Math.Log10(Math.Abs(b))) + 1;
    }
     
    // Driver code
    static void Main()
    {
        int a = 33;
        int b = -24;
        Console.Write(countDigits(a, b));
         
    }
}
 
// This code is contributed by Sam007


PHP


Javascript


输出:

Number of digits = 3

高效的方法:要计算两个数字的乘积中的位数,我们可以使用下面给出的公式:

count = floor(log10(a) + log10(b)) + 1

在这里,两个数字都必须是正整数。为此,我们可以取ab的绝对值。

C++

// C++ implementation to count number of digits
// in the product of two numbers
#include 
 
using namespace std;
 
// function to count number of digits
// in the product of two numbers
int countDigits(int a, int b)
{
    // if either of the number is 0, then
    // product will be 0
    if (a == 0 || b == 0)
        return 1;
         
    // required count of digits           
    return floor(log10(abs(a)) + log10(abs(b))) + 1;   
}
 
// Driver program to test above
int main()
{
    int a = 33;
    int b = -24;
    cout << countDigits(a,b);
    return 0;
}

Java

// JAVA Code for Number of digits
// in the product of two numbers
class GFG {
     
    // function to count number of digits
    // in the product of two numbers
    public static int countDigits(int a, int b)
    {
        // if either of the number is 0, then
        // product will be 0
        if (a == 0 || b == 0)
            return 1;
              
        // required count of digits           
        return (int)Math.floor(Math.log10(Math.abs(a)) +
                            Math.log10(Math.abs(b))) + 1;   
    }
     
    /* Driver program to test above function */
    public static void main(String[] args)
    {
        int a = 33;
        int b = -24;
        System.out.print(countDigits(a,b));
    }
}
// This code is contributed by Arnav Kr. Mandal.

Python3

# Python 3 implementation to count
# number of digits in the product
# of two numbers
import math
 
# function to count number of digits
# in the product of two numbers
def countDigits(a, b) :
     
    # if either of the number is 0,
    # then product will be 0
    if (a == 0 or b == 0) :
        return 1
         
    # required count of digits        
    return math.floor(math.log10(abs(a)) +
                   math.log10(abs(b))) + 1
 
 
# Driver program to test above
a = 33
b = -24
print(countDigits(a, b))
 
# This code is contributed by Nikita Tiwari.

C#

// C# Code for Number of digits
// in the product of two numbers
using System;
 
class GFG {
     
    // function to count number of
    // digits in the product of two
    // numbers
    public static int countDigits(int a,
                                  int b)
    {
        // if either of the number is 0,
        // then product will be 0
        if (a == 0 || b == 0)
            return 1;
             
        // required count of digits        
        return (int)Math.Floor(
                 Math.Log10(Math.Abs(a))
          + Math.Log10(Math.Abs(b))) + 1;
    }
     
    // Driver code
    static void Main()
    {
        int a = 33;
        int b = -24;
        Console.Write(countDigits(a, b));
         
    }
}
 
// This code is contributed by Sam007

的PHP


Java脚本


输出:

3