WLOG, suponga que m> n. Entonces, tenemos la intención de resolver [matemáticas] 2 ^ m – 2 ^ n = 56 [/ matemáticas].
Reclamación: [matemáticas] 1 + 2 + 2 ^ 2 + \ cdots + 2 ^ {n – 1} = \ sum_ {i = 0} ^ {n-1} 2 ^ {i} = 2 ^ n – 1 [/ mates]
Prueba: Fácil de probar, ya que es solo una progresión geométrica.
Por lo tanto, [matemáticas] 2 ^ m – 2 ^ n = (2 ^ m – 1) – (2 ^ n – 1) = \ sum_ {n} ^ {m-1} 2 ^ i [/ matemáticas].
- ¿Es mejor aprender estructuras de datos y algoritmos en C ++ o Java?
- ¿Alguien podrá escribir un algoritmo que pueda hacer dinero en el mercado durante un período de 20 años?
- ¿Qué sabes sobre el algoritmo de búsqueda de Fiverr?
- ¿Cuál será el algoritmo de rotación correcto en C?
- ¿Es una persona inteligente debido a los 'algoritmos' que usa su cerebro? Si es así, ¿alguien podría copiar ese 'algoritmo' para ser igualmente inteligente?
Entonces, todo lo que tenemos que hacer es calcular la representación binaria de 56 y verificar la posición del bit menos significativo establecido en 1 y el bit más significativo establecido en 1, es decir:
Dado, [matemática] 56_ {10} = 111000_2 [/ matemática], [matemática] n = 3 [/ matemática] y [matemática] m-1 = 5, \; m = 6 [/ matemáticas].
Moraleja de la historia: Para resolver [matemáticas] 2 ^ m – 2 ^ n = c [/ matemáticas], simplemente calcule la representación binaria de c y verifique las posiciones de 1. Recuerde que la diferencia de dos potencias de 2 siempre será un número que tiene una secuencia continua de 1 en su representación binaria (que es lo que probamos anteriormente).