🎯 Problemas Tipo

Estos patrones aparecen en casi todas las competiciones.

🟢 Tipo 1: Patrones ASCII (1-5 pts)

# Triángulo de N filas
n = int(input())
for i in range(1, n + 1):
    print("*" * i)

# Triángulo centrado
for i in range(1, n + 1):
    print(" " * (n - i) + "*" * (2 * i - 1))

🟢 Tipo 2: Fórmulas (1-4 pts)

# Celsius a Fahrenheit
c = float(input())
f = c * 9/5 + 32
print(f"{f:.2f}")

# Interés compuesto
capital = float(input())
tasa = float(input()) / 100
años = int(input())
final = capital * (1 + tasa) ** años
print(f"{final:.2f}")

🟡 Tipo 3: Frecuencias (5-8 pts)

# Letra más frecuente
texto = input().lower()
freq = {}
for c in texto:
    if c.isalpha():
        freq[c] = freq.get(c, 0) + 1

mas_comun = max(freq, key=freq.get)
print(mas_comun, freq[mas_comun])

🟡 Tipo 4: Palíndromos (4-7 pts)

texto = input().lower()
limpio = "".join(c for c in texto if c.isalpha())

if limpio == limpio[::-1]:
    print("SI")
else:
    print("NO")

🟡 Tipo 5: Cifrado César (6-10 pts)

texto = input()
n = int(input())
resultado = ""

for c in texto:
    if c.isalpha():
        base = ord('A') if c.isupper() else ord('a')
        nuevo = (ord(c) - base + n) % 26 + base
        resultado += chr(nuevo)
    else:
        resultado += c
print(resultado)

🔴 Tipo 6: Ordenación multi-criterio (8-15 pts)

# Alumnos por media desc, empates por nombre asc
n = int(input())
alumnos = []
for _ in range(n):
    partes = input().split()
    nombre = partes[0]
    notas = [float(x) for x in partes[1:]]
    media = sum(notas) / len(notas)
    alumnos.append((nombre, media))

resultado = sorted(alumnos, key=lambda x: (-x[1], x[0]))
for nombre, media in resultado:
    print(f"{nombre} {media:.2f}")

🔴 Tipo 7: Números primos (5-12 pts)

def es_primo(n):
    if n < 2: return False
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0: return False
    return True

a, b = map(int, input().split())
for n in range(a, b + 1):
    if es_primo(n):
        print(n)