Dados dos enteros positivos X e Y , la tarea es encontrar el MSB de X, en la base Y dada.
Ejemplos:
Entrada: X = 55, Y = 3
Salida: 2
Explicación:
55 es 2001 en base 3 con el primer dígito como 2.
Entrada: X = 123, Y = 10
Salida: 1
Explicación:
123 es 123 en base 10 con el primer dígito 1 .
Enfoque: Deje que la tarea encuentre el primer dígito de X = 1234 en base Y = 10, así que para obtener el primer dígito = 1:
Divide 1234 por 1000
= X / 10 3
= X / 10 Número de dígitos en X – 1
= X / 10 log(X) / log(10) (que es para base 10)
Para cualquier otra base, podemos reemplazar 10 con Y. Por lo tanto, podemos calcular el primer dígito de un número X en base Y usando la fórmula:
X / Y (registro(X)/registro(Y))
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ Program to find the // first digit of X in base Y #include <bits/stdc++.h> using namespace std; // Function to find the first // digit of X in base Y void first_digit(int x, int y) { // calculating number of digits of // x in base y int length = log(x) / log(y) + 1; // finding first digit of x in base y int first_digit = x / pow(y, length - 1); cout << first_digit; } // Driver code int main() { int X = 55, Y = 3; first_digit(X, Y); return 0; }
Java
// Java Program to find the // first digit of X in base Y import java.util.*; class GFG{ // Function to find the first // digit of X in base Y static void first_digit(int x, int y) { // calculating number of digits of // x in base y int length = (int)(Math.log(x) / Math.log(y) + 1); // finding first digit of x in base y int first_digit = (int)(x / Math.pow(y, length - 1)); System.out.println(first_digit); } // Driver code public static void main(String args[]) { int X = 55, Y = 3; first_digit(X, Y); } } // This code is contributed by AbhiThakur
Python3
# Python3 program to find the # first digit of X in base Y import math # Function to find the first # digit of X in base Y def first_digit(x, y): # Calculating number of digits of # x in base y length = int (math.log(x) / math.log(y) + 1) # Finding first digit of x in base y first_digit = x / math.pow(y, length - 1) print(int(first_digit)) # Driver code X = 55 Y = 3 first_digit(X, Y) # This code is contributed by ishayadav181
C#
// C# Program to find the // first digit of X in base Y using System; class GFG{ // Function to find the first // digit of X in base Y static void first_digit(int x, int y) { // calculating number of digits of // x in base y int length = (int)(Math.Log(x) / Math.Log(y) + 1); // finding first digit of x in base y int first_digit = (int)(x / Math.Pow(y, length - 1)); Console.Write(first_digit); } // Driver code public static void Main() { int X = 55, Y = 3; first_digit(X, Y); } } // This code is contributed by Akanksha_Rai
Javascript
<script> // Javascript Program to find the // first digit of X in base Y // Function to find the first // digit of X in base Y function first_digit(x, y) { // calculating number of digits of // x in base y var length = parseInt(Math.log(x) / Math.log(y)) + 1; // finding first digit of x in base y var first_digit = parseInt(x / Math.pow(y, length - 1)); document.write( first_digit); } // Driver code var X = 55, Y = 3; first_digit(X, Y); </script>
2
Complejidad de tiempo: O(1)
Espacio Auxiliar: O(1)