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
- Elige un problema y escribe tu solución en el editor de su página.
- Pulsa Evaluar (o Ctrl+Enter en el editor) — tu código corre contra varios casos de prueba en tu propio navegador: ves exactamente cuáles pasan y, en los que fallan, la entrada, la salida esperada y lo que tu programa imprimió de verdad.
- ¿Empezar de cero? Reiniciar restaura la plantilla inicial (borra tu borrador guardado, por eso pregunta antes).
- ¿Atascado? Abre las pistas una a una antes de mirar la solución. ¿Resuelto? El banner te pasa directo al siguiente problema — los sesenta y cinco forman un camino por dificultad.
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
Ningún problema coincide: prueba otro tema o borra la búsqueda.
Principiante
| Problema | Se practica | |
|---|---|---|
| Suma de dos números | Leer entrada, imprimir salida | Empieza aquí |
| Saludar | Primera lectura, primera escritura | |
| ¿Par o impar? | Un módulo, una rama | |
| Valor absoluto | Ramificar según el signo | |
| Intercambiar dos números | Por qué hace falta un temporal | |
| Ordenar tres números | Tres comparar-e-intercambiar | |
| Cuenta atrás | Un for puede ir hacia atrás | |
| Suma de 1 a N | Tu primer bucle for | |
| El mayor de tres | if y comparaciones | |
| Contar dígitos | Bucles while y división entera | |
| Suma de los dígitos | El patrón de trocear dígitos, tercera vuelta | |
| Año bisiesto | &&/|| y leer los casos borde | |
| Tabla de multiplicar | Bucles + formato de salida exacto | |
| Invertir una cadena | Cadenas, arrays de char | |
| Contar vocales | inspección de char, cctype | |
| Compresión por longitud | Un puntero, tramos que se cierran solos |
Fácil–medio
| Problema | Se practica | |
|---|---|---|
| Invertir un número | Dígitos, % y / juntos | |
| Número palíndromo | Reconocer un patrón que ya dominas | |
| Número de Armstrong | Contar cifras y elevar cada una a esa potencia | |
| Pirámide de asteriscos | Bucles anidados, formato de salida | |
| Factorial | Acumulación, el techo de desbordamiento de int | |
| Máximo de un array | Arrays vs streaming, máximo corrido | |
| Contar pares e impares | Contadores en paralelo, cuidado con los negativos | |
| Invertir el orden de las palabras | Leer la línea entera, separar, escribir al revés | |
| Subir escaleras | Primera PD: el último paso decide la recurrencia |
Medio
| Problema | Se practica | |
|---|---|---|
| ¿Es primo? | Lógica de bucles, salida temprana, atajo de √N | |
| Contar primos | Criba de Eratóstenes — memoria a cambio de velocidad | |
| Máximo común divisor | Algoritmo de Euclides, el primer clásico | |
| Mínimo común múltiplo | Reutilizar el MCD — y por qué dividir antes de multiplicar | |
| Número de Fibonacci | Par deslizante, recursión vs iteración | |
| Representación binaria | Bits, guardar e imprimir al revés con arrays | |
| Sumar una matriz | arrays 2D, bucles anidados | |
| ¿Es potencia de dos? | bucle decreciente, truco de bits | |
| Frecuencia de dígitos | arrays de conteo | |
| Contar bits 1 | bits, truco de Kernighan | |
| Monedas mínimas | Voraz: coger la mayor que quepa | |
| Paréntesis equilibrados | Array como pila: apilar y desapilar | |
| Generar subconjuntos | Máscara de bits: cada subconjunto es un número binario | |
| Sumas por rangos 2D | Inclusión-exclusión con cuatro esquinas | |
| Suma mínima del camino | Primera PD 2D: dos pasados por celda | |
| Días entre dos fechas | Reglas bisiestas + números de serie | |
| Multiplicación de matrices | Triple bucle, un índice compartido | |
| Recorrido en espiral | Cuatro bordes que encogen, dos re-comprobaciones | |
| El círculo de José | Simulación: array de vivos + módulo |
Pensar en algoritmos
| Problema | Se practica | |
|---|---|---|
| El segundo mayor | Seguir dos valores en un solo recorrido | |
| ¿Existe la suma de dos? | Cada par una sola vez — bucle interior desde i+1 | |
| Pasos de Collatz | Simular una regla que nadie sabe resolver | |
| Contar palabras | Recorrer texto con una bandera de estado | |
| Ordenamiento burbuja | Comparar e intercambiar en el sitio | |
| Búsqueda binaria | Dividir un rango ordenado, y los límites | |
| Suma máxima de subarray | Una pasada, un valor arrastrado | |
| Cadena palíndromo | Avanzar desde ambos extremos | |
| Transponer una matriz | ¿Cuál índice es la fila? | |
| Conversión de base | Dividir, tomar el resto, invertir | |
| Ordenación por conteo | Cambiar comparaciones por memoria | |
| Torres de Hanói | Confiarse de una función antes de terminarla | |
| Ceros finales | Sustituir calcular por contar | |
| Sumas por rangos | Sumas prefijas: paga una vez, consulta en O(1) | |
| Todas las permutaciones | Backtracking: elegir, recursión, des-elegir | |
| Fusionar intervalos | Primero ordena, luego un barrido con extremo corriente | |
| Tiempo mínimo de espera | Voraz demostrado por intercambio | |
| Cambio de monedas | PD donde el voraz falla: {1,3,4} para 6 | |
| Generar paréntesis | Backtracking con contadores que podan | |
| Mochila 0/1 | La dirección del bucle decide la reutilización | |
| Subsecuencia creciente más larga | La mejor cadena que termina aquí, O(n²) |
Antes de empezar
- La salida debe coincidir exactamente — mismos caracteres, mismas líneas (los espacios finales y el salto final no cuentan).
- Todo se resuelve con la caja de herramientas de principiante:
cin/cout,if, bucles, arrays y funciones — el mismo subconjunto de las lecciones. - Al resolver, sube el nivel del mismo problema: ¿puedes hacer la Suma de 1 a N en O(1) con una fórmula? ¿Puede ¿Es primo? saltarse los pares?