He estado trabajando en una serie de desafíos de programación para mejorar mis habilidades matemáticas, y me encontré con una solución que no sé cómo explicar.
El problema:
"Para
1 <= A <= B <= 10^9
, encuentra la cantidad de cuadrados perfectos entre $A$ y $B$ (inclusive).
Mi solución inicial fue recorrer todos los números en un rango y contar los cuadrados perfectos de esa manera. Sin embargo, esta fue claramente una solución muy lenta (~ 14 segundos para el rango 1 -> 10^9).
Luego, encontré lo siguiente:
"La cantidad de cuadrados entre $A$ y $B$ =
sqrt(B) - sqrt(A - 1)
redondeado hacia abajo".
NOTA: Según una respuesta a esta pregunta, redondeado hacia abajo
es incorrecto en este caso, pero esta fórmula sirve para encontrar los cuadrados perfectos en un rango dado. El código para esta pregunta en realidad convierte el valor a un int
, que realiza el redondeo al número entero más cercano, no necesariamente hacia abajo.
Esto es genial y ofreció una solución mucho más rápida, pero no entiendo por qué.
¿Alguien puede ayudarme a entender por qué esta ecuación simple realmente funciona?
0 votos
¿Te refieres al número de cuadrados entre $A$ y $B$?
0 votos
@Ed_4434 Incluso, sí. Disculpas si mi formato no está claro :)