POLITICA DE COOKIES

Q2BSTUDIO.COM utiliza cookies técnicas, analíticas, de sesión y de publicidad con la finalidad de prestar un mejor servicio. No obstante, necesitamos su consentimiento explícito para poder utilizarlas. Así mismo puede cambiar la configuración de las cookies u obtener más información aquí .

Operaciones mínimas para alcanzar cero

LeetCode 2749: convertir num1 − k · num2 en una suma exacta de potencias de dos en 60 iteraciones

Publicado el 07/09/2025

Los problemas de programación competitiva suelen parecer extraños al principio. Algunos parecen acertijos diseñados para confundirnos, pero al profundizar suelen revelar un patrón elegante. El reto LeetCode 2749 Minimum Operations to Make the Integer Zero es un gran ejemplo.

Enunciado del problema en sencillo: dados dos enteros num1 y num2, en cada operación puedes elegir un i entre 0 y 60 y restar a num1 el valor 2^i + num2. El objetivo es reducir num1 exactamente a cero con el menor número de operaciones posible o decidir que es imposible.

Reformulación. Tras k operaciones, lo que restaste es la suma de k potencias de dos más k veces num2. Si llamamos T al valor num1 - k · num2, la condición para que exista una secuencia válida es que T pueda escribirse como suma de exactamente k potencias de dos.

Esto conduce a tres reglas simples. Uno, T debe ser positivo. Dos, el mínimo número de potencias de dos para formar T es el número de unos en su binario, conocido como popcount, por lo que debe cumplirse popcount T = k. Tres, como la suma mínima de k potencias de dos es k usando 1 repetido, también debe cumplirse k = T. En conjunto, las condiciones son T mayor que 0 y popcount T = k = T.

Estrategia. Recorre k desde 1 hasta 60. Para cada k, calcula T = num1 - k · num2. Si T no es positivo, continúa. Si se cumple popcount T = k y además k = T, entonces k es una respuesta válida y es la mínima por construcción, así que se devuelve k. Si ningún k en ese rango funciona, la respuesta es -1. Esta búsqueda es muy rápida porque solo evalúa hasta 60 candidatos.

Ejemplo 1. num1 = 3, num2 = -2. Con k = 1 se obtiene T = 5 y popcount 5 = 2, no vale porque 2 es mayor que 1. Con k = 2 se obtiene T = 7 y popcount 7 = 3, tampoco. Con k = 3 se obtiene T = 9 y popcount 9 = 2, se cumple 2 = 3 = 9, por tanto la respuesta es 3.

Ejemplo 2. num1 = 5, num2 = 7. Con k = 1 se tiene T = -2, inválido. Con k = 2, T = -9, inválido. Para k mayores T seguirá decreciendo, así que es imposible. Respuesta -1.

Por qué funciona. Toda cantidad positiva tiene una representación binaria única y el número de bits a 1 indica el mínimo de potencias de dos necesarias para formarla. Si necesitamos más términos, siempre podemos descomponer potencias grandes en menores. Pero si intentamos usar menos términos que el popcount, es imposible. Al iterar sobre k y comprobar T mayor que 0, popcount T = k y k = T, resolvemos de forma directa.

Pistas de implementación. En C++ usa __builtin_popcountll para el conteo de bits y tipos de 64 bits para T. En Python utiliza bit_count. En JavaScript trabaja con BigInt y un popcount manual limpiando el bit menos significativo en cada paso. Detalle importante de límites: i se acota a 60 y 2^60 ya es suficientemente grande para cubrir los rangos habituales, por lo que k hasta 60 es un tope seguro.

Conclusión. La operación 2^i + num2 puede parecer rara, pero al reorganizar el problema todo se reduce a verificar si un T específico puede descomponerse en exactamente k potencias de dos. Con unas pocas condiciones binarias y un bucle corto, obtenemos una solución clara, eficiente y fácil de implementar.

En Q2BSTUDIO te ayudamos a trasladar este tipo de lógica a productos reales con aplicaciones a medida y software a medida, integrando inteligencia artificial y agentes IA donde tiene sentido de negocio. Si buscas un socio para ia para empresas, consulta nuestros servicios de inteligencia artificial y descubre cómo diseñamos soluciones robustas y escalables.

Nuestro equipo también cubre ciberseguridad con pentesting, servicios cloud aws y azure, servicios inteligencia de negocio y power bi, además de automatización de procesos y arquitectura de datos moderna. Si necesitas una plataforma sólida para impulsar tus productos y crear aplicaciones a medida multiplataforma, visita nuestro enfoque de desarrollo de software a medida, donde unimos buenas prácticas de ingeniería con analítica avanzada para acelerar la entrega de valor.

Fin del artículo, inicio de la diversión
Construyendo software juntos

Dando vida a tus ideas desde 2008

Diseñamos aplicaciones móviles y de escritorio innovadoras que cumplen con tus requisitos específicos y mejoran la eficiencia operativa.
Más info
Cuéntanos tu visión
Sea cual sea el alcance, podemos convertir tu idea en realidad. Envíanosla y charlemos sobre tu proyecto o una colaboración futura.
Contáctanos
artículos destacados
Live Chat
Enviado correctamente.

Gracias por confiar en Q2BStudio