Problemas de práctica de C++

Resuelve en el navegador y recibe la corrección al instante. Cada problema trae casos de prueba ocultos, pistas, una solución completa y un análisis profundo — con XP y logros al avanzar, ordenados del primer paso al pensamiento algorítmico de verdad.

Cómo funciona

Como todo en este sitio, la corrección corre localmente en tu navegador — sin cuenta, sin subidas, nada sale de tu dispositivo. Los borradores se guardan solos mientras escribes. La buena noticia: un bucle infinito se corta a los 3 segundos en vez de colgar la pestaña, así que un error cuesta unos segundos, no recargar la página.

65 problemas

Principiante

ProblemaSe practica
Suma de dos númerosLeer entrada, imprimir salidaEmpieza aquí
SaludarPrimera lectura, primera escritura
¿Par o impar?Un módulo, una rama
Valor absolutoRamificar según el signo
Intercambiar dos númerosPor qué hace falta un temporal
Ordenar tres númerosTres comparar-e-intercambiar
Cuenta atrásUn for puede ir hacia atrás
Suma de 1 a NTu primer bucle for
El mayor de tresif y comparaciones
Contar dígitosBucles while y división entera
Suma de los dígitosEl patrón de trocear dígitos, tercera vuelta
Año bisiesto&&/|| y leer los casos borde
Tabla de multiplicarBucles + formato de salida exacto
Invertir una cadenaCadenas, arrays de char
Contar vocalesinspección de char, cctype
Compresión por longitudUn puntero, tramos que se cierran solos

Fácil–medio

ProblemaSe practica
Invertir un númeroDígitos, % y / juntos
Número palíndromoReconocer un patrón que ya dominas
Número de ArmstrongContar cifras y elevar cada una a esa potencia
Pirámide de asteriscosBucles anidados, formato de salida
FactorialAcumulación, el techo de desbordamiento de int
Máximo de un arrayArrays vs streaming, máximo corrido
Contar pares e imparesContadores en paralelo, cuidado con los negativos
Invertir el orden de las palabrasLeer la línea entera, separar, escribir al revés
Subir escalerasPrimera PD: el último paso decide la recurrencia

Medio

ProblemaSe practica
¿Es primo?Lógica de bucles, salida temprana, atajo de √N
Contar primosCriba de Eratóstenes — memoria a cambio de velocidad
Máximo común divisorAlgoritmo de Euclides, el primer clásico
Mínimo común múltiploReutilizar el MCD — y por qué dividir antes de multiplicar
Número de FibonacciPar deslizante, recursión vs iteración
Representación binariaBits, guardar e imprimir al revés con arrays
Sumar una matrizarrays 2D, bucles anidados
¿Es potencia de dos?bucle decreciente, truco de bits
Frecuencia de dígitosarrays de conteo
Contar bits 1bits, truco de Kernighan
Monedas mínimasVoraz: coger la mayor que quepa
Paréntesis equilibradosArray como pila: apilar y desapilar
Generar subconjuntosMáscara de bits: cada subconjunto es un número binario
Sumas por rangos 2DInclusión-exclusión con cuatro esquinas
Suma mínima del caminoPrimera PD 2D: dos pasados por celda
Días entre dos fechasReglas bisiestas + números de serie
Multiplicación de matricesTriple bucle, un índice compartido
Recorrido en espiralCuatro bordes que encogen, dos re-comprobaciones
El círculo de JoséSimulación: array de vivos + módulo

Pensar en algoritmos

ProblemaSe practica
El segundo mayorSeguir dos valores en un solo recorrido
¿Existe la suma de dos?Cada par una sola vez — bucle interior desde i+1
Pasos de CollatzSimular una regla que nadie sabe resolver
Contar palabrasRecorrer texto con una bandera de estado
Ordenamiento burbujaComparar e intercambiar en el sitio
Búsqueda binariaDividir un rango ordenado, y los límites
Suma máxima de subarrayUna pasada, un valor arrastrado
Cadena palíndromoAvanzar desde ambos extremos
Transponer una matriz¿Cuál índice es la fila?
Conversión de baseDividir, tomar el resto, invertir
Ordenación por conteoCambiar comparaciones por memoria
Torres de HanóiConfiarse de una función antes de terminarla
Ceros finalesSustituir calcular por contar
Sumas por rangosSumas prefijas: paga una vez, consulta en O(1)
Todas las permutacionesBacktracking: elegir, recursión, des-elegir
Fusionar intervalosPrimero ordena, luego un barrido con extremo corriente
Tiempo mínimo de esperaVoraz demostrado por intercambio
Cambio de monedasPD donde el voraz falla: {1,3,4} para 6
Generar paréntesisBacktracking con contadores que podan
Mochila 0/1La dirección del bucle decide la reutilización
Subsecuencia creciente más largaLa mejor cadena que termina aquí, O(n²)

Antes de empezar