Dado un número N y base b, si N en base b, la representación comienza con 1, imprime Sí, de lo contrario, imprime No
Ejemplos:
Input : n = 6, b = 4 Output : Yes 6 can be written as in base 4so answer is Yes as it starts with 1Input : n = 24, b = 2Output : Yes24 can be written as in base 2so answer is Yes as it starts with 1Input : n = 24, b = 7Output : No24 can be written as in base 7so answer is No as it starts with 3
Cuando un número N se representa en la base ‘b’, se convierte en una secuencia de longitud m+1 [Tex]b_{m-1} [/Tex]….. lo que implica * + * …..+ * = N
El número más pequeño en la base b y que comienza con ‘1’, es decir, 100..00 y m+1 dígitos en la base es
y el número más grande es 2* -1. Entonces, N debe estar en este rango.
<= N <= 2* -1
Ahora, otra cosa a tener en cuenta es que m no puede exceder el piso ( (N)) porque cuando representamos cualquier número en base 2, se convierte en una secuencia de solo 1 y 0, por lo que la longitud de esta secuencia siempre será mayor que cualquier otra representación base y su longitud será igual a piso( (N))+1.
Entonces, para verificar una base ‘b’ dada, si N comienza con 1 o no, atravesaremos de m = 1 a m = piso (( N)) y verificaremos si para cualquier m N se encuentra en el rango <= N <= 2 * -1 o no y, en consecuencia, imprima «Sí» o «No».
C++
// C++ program to check if number starts with // one in base b representation #include <bits/stdc++.h> using namespace std; // Returns true if n starts with 1 in // base b representation bool CheckIfstartsWithOne(int n, int b) { // highest m can be log2(n) int m = log2(n); for (int i = 1; i <= m; i++) { // if b^m <= N <= 2*b^m - 1, // return true if (n >= pow(b, i) && n <= 2 * pow(b, i) - 1) return true; } return false; } // printing yes or no void printYesORno(int n, int b) { if (CheckIfstartsWithOne(n, b) == true) cout << "Yes" << endl; else if (CheckIfstartsWithOne(n, b) == false) cout << "No" << endl; } // driver function int main() { printYesORno(6, 4); printYesORno(24, 2); printYesORno(24, 7); printYesORno(24, 15); }
Java
// Java program to check if number starts with // one in base b representation class GFG { // Returns true if n starts with 1 in // base b representation static boolean CheckIfstartsWithOne(int n, int b) { // highest m can be log2(n) int m = (int)(Math.log10(n) / Math.log10(2)); for (int i = 1; i <= m; i++) { // if b^m <= N <= 2*b^m - 1, // return true if (n >= (int)Math.pow(b, i) && n <= 2 * (int)Math.pow(b, i) - 1) return true; } return false; } // Driver method public static void main(String args[]) { System.out.println( CheckIfstartsWithOne(6, 4) ? "Yes" : "No"); System.out.println( CheckIfstartsWithOne(24, 2) ? "Yes" : "No"); System.out.println( CheckIfstartsWithOne(24, 7) ? "Yes" : "No"); System.out.println( CheckIfstartsWithOne(24, 15) ? "Yes" : "No"); } }
Python3
# Python3 program to check # if number starts with one # in base b representation import math # Returns true if n # starts with 1 in # base b representation def CheckIfstartsWithOne(n, b): # highest m can be log2(n) m = (int)(math.log2(n)); for i in range (1, m + 1): # if b^m <= N <= 2*b^m - 1, #return true x = (int)(math.pow(b, i)); if n >= x and n <= 2 * x - 1: return 1; return 0; # printing yes or no def printYesORno(n, b): if CheckIfstartsWithOne(n, b) == 1: print("Yes"); if CheckIfstartsWithOne(n, b) == 0: print("No"); # Driver Code printYesORno(6, 4); printYesORno(24, 2); printYesORno(24, 7); printYesORno(24, 15); # This code is contributed by mits.
C#
// C# program to check if number starts with // one in base b representation using System; class GFG{ // Returns true if n starts with 1 in // base b representation static bool CheckIfstartsWithOne(int n, int b) { // highest m can be log2(n) int m = (int)(Math.Log10(n) / Math.Log10(2)); for(int i = 1; i <= m; i++) { // if b^m <= N <= 2*b^m - 1, // return true if (n >= (int)Math.Pow(b, i) && n <= 2 * (int)Math.Pow(b, i) - 1) return true; } return false; } // Driver code public static void Main(String []args) { Console.WriteLine( CheckIfstartsWithOne(6, 4) ? "Yes" : "No"); Console.WriteLine( CheckIfstartsWithOne(24, 2) ? "Yes" : "No"); Console.WriteLine( CheckIfstartsWithOne(24, 7) ? "Yes" : "No"); Console.WriteLine( CheckIfstartsWithOne(24, 15) ? "Yes" : "No"); } } // This code is contributed by Princi Singh
PHP
<?php // PHP program to check if // number starts with one // in base b representation // Returns true if n starts // with 1 in base b representation function CheckIfstartsWithOne($n, $b) { // highest m can be log2(n) $m = log($n, 2); for ($i = 1; $i <= $m; $i++) { // if b^m <= N <= 2*b^m - 1, // return true if ($n >= pow($b, $i) && $n <= 2 * pow($b, $i) - 1) return true; } return false; } // printing yes or no function printYesORno($n, $b) { if (CheckIfstartsWithOne($n, $b) == true) echo "Yes" ,"\n"; else if (CheckIfstartsWithOne($n, $b) == false) echo "No" ,"\n"; } // Driver Code printYesORno(6, 4); printYesORno(24, 2); printYesORno(24, 7); printYesORno(24, 15); // This code is contributed by ajit ?>
Javascript
<script> // Javascript program to check if number starts // with one in base b representation // Returns true if n starts with // 1 in base b representation function CheckIfstartsWithOne(n, b) { // highest m can be log2(n) let m = parseInt(Math.log10(n) / Math.log10(2), 10); for (let i = 1; i <= m; i++) { // if b^m <= N <= 2*b^m - 1, // return true if (n >= Math.pow(b, i) && n <= 2 * Math.pow(b, i) - 1) return true; } return false; } document.write(CheckIfstartsWithOne(6, 4) ? "Yes" + "</br>" : "No" + "</br>"); document.write(CheckIfstartsWithOne(24, 2) ? "Yes" + "</br>" : "No" + "</br>"); document.write(CheckIfstartsWithOne(24, 7) ? "Yes" + "</br>" : "No" + "</br>"); document.write(CheckIfstartsWithOne(24, 15) ? "Yes" : "No"); </script>
Producción :
Yes Yes No Yes
Complejidad de tiempo: O(m), donde m se calcula como log2(n)
Espacio auxiliar: O(1), ya que no se requiere espacio adicional
Este artículo es una contribución de Ayush Jha . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA