Dados dos enteros positivos a y b, la tarea es encontrar el número de dígitos en a^b (a elevado a la potencia b).
Ejemplo:
Input: a = 2 b = 5 Output: no. of digits = 2 Explanation: 2^5 = 32 Hence, no. of digits = 2 Input: a = 2 b = 100 Output: no. of digits = 31 Explanation: 2^100 = 1.2676506e+30 Hence, no. of digits = 31
Enfoque:
El número de dígitos en a^b se puede calcular usando la fórmula:
Number of Digits = 1 + b * (log10a)
Cuando un número se divide por 10, se reduce en 1 dígito.
Ejemplo:
554 / 10 = 55, 55 / 10 = 5
Fíjate, 554 inicialmente tiene 3 dígitos pero después de la división hay 2 dígitos 55 y después de una división adicional solo hay 1 dígito 5. Por lo tanto, se puede concluir que para contar el número de dígitos, ¿cuántas veces se divide un número por 10 para llegar a 1? necesita ser calculado.
La base logarítmica 10 de un número es la cantidad de veces que un número debe dividirse por 10 para llegar a 1, pero como el 1 no está incluido en la base logarítmica 10, se suma 1 para obtener la cantidad de dígitos.
Nota: Se toma el valor mínimo de b* (log 10 a) .
A continuación se muestra la implementación para calcular el número de dígitos en a^b.
CPP
// CPP Program to calculate // no. of digits in a^b #include<iostream> #include<math.h> using namespace std; // function to calculate number // of digits in a^b int no_of_digit(int a, int b) { return ((int)(b * log10(a)) + 1); } // driver program int main() { int a = 2, b = 100; cout <<"no. of digits = "<< no_of_digit(a, b); } // This code is contributed by Smitha
Java
// Java Program to calculate // no. of digits in a^b class GFG { // function to calculate number // of digits in a^b static int no_of_digit(int a, int b) { return ((int)(b * Math.log10(a)) + 1); } // driver program public static void main(String[] args) { int a = 2, b = 100; System.out.print("no. of digits = " + no_of_digit(a, b)); } }
Python3
# Python Program to calculate # no. of digits in a^b import math # function to calculate number # of digits in a^b def no_of_digit(a, b): return ((int)(b * math.log10(a)) + 1) # Driver Program a = 2 b = 100 print("no of digits = ", no_of_digit(a, b)) # This code is contributed by Shrikant13
C#
// C# Program to calculate // no. of digits in a^b using System; class GFG { // function to calculate number // of digits in a^b static int no_of_digit(int a, int b) { return ((int)(b * Math.Log10(a)) + 1); } // driver program public static void Main() { int a = 2, b = 100; Console.Write("no. of digits = " + no_of_digit(a, b)); } } // This code is contributed by Smitha.
PHP
<?php // PHP Program to calculate // no. of digits in a^b // function to calculate number // of digits in a^b function no_of_digit($a, $b) { return ((int)($b * log10($a)) + 1); } // Driver Code $a = 2; $b = 100; echo("no. of digits = " .no_of_digit($a, $b)); // This code is contributed by Ajit. ?>
Javascript
<script> // JavaScript Program to calculate // no. of digits in a^b // function to calculate number // of digits in a^b function no_of_digit(a, b) { return (Math.round((b * Math.log10(a)) + 1)); } // Driver program let a = 2, b = 100; document.write("no. of digits = " + no_of_digit(a, b)); // This code is contributed by susmitakundugoaldanga. </script>
Producción:
no.of digits = 31