给定维度为M * N的矩阵arr [] [] ,任务是计算给定矩阵中每个元素的位数。
例子:
Input: arr[][] = { { 27, 173, 5 }, { 21, 6, 624 }, { 5, 321, 49 } }
Output:
2 3 1
2 1 3
1 3 2
Input: arr[][] = { {11, 12, 33 }, { 64, 57, 61 }, { 74, 88, 39 } }
Output:
2 2 2
2 2 2
2 2 2
方法:解决此问题的想法是遍历给定的矩阵,对于矩阵的每个索引,使用以下表达式对存在于该索引处的数字的位数进行计数:
Number of digits present in any value X is given by floor(log10(X))+1.
下面是上述方法的实现:
C++
// C++ program for the above approach
#include
using namespace std;
const int M = 3;
const int N = 3;
// Function to count the number of digits
// in each element of the given matrix
void countDigit(int arr[M][N])
{
// Traverse each row of arr[][]
for (int i = 0; i < M; i++) {
// Traverse each column of arr[][]
for (int j = 0; j < N; j++) {
// Store the current matrix element
int X = arr[i][j];
// Count the number of digits
int d = floor(log10(X) * 1.0) + 1;
// Print the result
cout << d << " ";
}
cout << endl;
}
}
// Driver Code
int main()
{
// Given matrix
int arr[][3] = { { 27, 173, 5 },
{ 21, 6, 624 },
{ 5, 321, 49 } };
countDigit(arr);
return 0;
}
Java
// Java program for the above approach
import java.util.*;
class GFG
{
static int M = 3;
static int N = 3;
// Function to count the number of digits
// in each element of the given matrix
static void countDigit(int arr[][])
{
// Traverse each row of arr[][]
for (int i = 0; i < M; i++)
{
// Traverse each column of arr[][]
for (int j = 0; j < N; j++)
{
// Store the current matrix element
int X = arr[i][j];
// Count the number of digits
int d = (int) (Math.floor(Math.log10(X) * 1.0) + 1);
// Print the result
System.out.print(d+ " ");
}
System.out.println();
}
}
// Driver Code
public static void main(String[] args)
{
// Given matrix
int arr[][] = { { 27, 173, 5 },
{ 21, 6, 624 },
{ 5, 321, 49 } };
countDigit(arr);
}
}
// This code is contributed by Princi Singh
Python3
# Python3 program for the above approach
from math import floor, log10
M = 3
N = 3
# Function to count the number of digits
# in each element of the given matrix
def countDigit(arr):
# Traverse each row of arr[][]
for i in range(M):
# Traverse each column of arr[][]
for j in range(N):
# Store the current matrix element
X = arr[i][j]
# Count the number of digits
d = floor(log10(X) * 1.0) + 1
# Print the result
print(d, end = " ")
print()
# Driver Code
if __name__ == '__main__':
# Given matrix
arr = [ [ 27, 173, 5 ],
[ 21, 6, 624 ],
[ 5, 321, 49 ] ]
countDigit(arr)
# This code is contributed by mohit kumar 29
C#
// C# program to implement
// the above approach
using System;
class GFG
{
static int M = 3;
static int N = 3;
// Function to count the number of digits
// in each element of the given matrix
static void countDigit(int[,] arr)
{
// Traverse each row of arr[][]
for (int i = 0; i < M; i++)
{
// Traverse each column of arr[][]
for (int j = 0; j < N; j++)
{
// Store the current matrix element
int X = arr[i, j];
// Count the number of digits
int d = (int) (Math.Floor(Math.Log10(X) * 1.0) + 1);
// Print the result
Console.Write(d + " ");
}
Console.WriteLine();
}
}
// Driver Code
public static void Main()
{
// Given matrix
int[,] arr = { { 27, 173, 5 },
{ 21, 6, 624 },
{ 5, 321, 49 } };
countDigit(arr);
}
}
// This code is contributed by susmitakundugoaldanga
输出:
2 3 1
2 1 3
1 3 2
时间复杂度: O(M * N)
辅助空间: O(1)