给定两个整数a和b 。任务是找到a / b中小数点之前的位数。
例子:
Input: a = 100, b = 4
Output: 2
100 / 4 = 25 and number of digits in 25 = 2.
Input: a = 100000, b = 10
Output: 5
天真的方法:将两个数字相除,然后找到除法中的数字。取除法的绝对值以找到位数。
下面是上述方法的实现:
C++
// C++ implementation of the approach
#include
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
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
C++
// C++ implementation of the approach
#include
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
Javascript
输出:
2
高效的方法:要计算a / b中的位数,我们可以使用以下公式:
floor(log10(a) – log10(b)) + 1
在这里,两个数字都必须是正整数。为此,我们可以取a和b的绝对值。
下面是上述方法的实现:
C++
// C++ implementation of the approach
#include
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
Java脚本
输出:
2