🔴 Pack Avanzado

🛑
Nivel difícil: Estos problemas son para Minion 1 y Minion 2. Requieren algoritmos específicos y optimización.

Ejercicio 1: Medallero Olímpico (12 pts)

N países con oro, plata, bronce. Ordena por medallas (oro > plata > bronce), empates por nombre.

Entrada:
3
España 5 3 2
Francia 5 4 1
Italia 4 6 3
Salida:
Francia 5 4 1
España 5 3 2
Italia 4 6 3
👁️ Ver solución
n = int(input())
paises = []
for _ in range(n):
    p = input().split()
    paises.append((p[0], int(p[1]), int(p[2]), int(p[3])))

resultado = sorted(paises, key=lambda x: (-x[1], -x[2], -x[3], x[0]))
for p in resultado:
    print(p[0], p[1], p[2], p[3])

Ejercicio 2: Cifrado Vigenère (15 pts)

Cifra usando clave que se repite.

Entrada:
HOLA
ABC
Salida: HPNB
👁️ Ver solución
texto = input().upper()
clave = input().upper()
resultado = ""
j = 0
for c in texto:
    if c.isalpha():
        desp = ord(clave[j % len(clave)]) - ord('A')
        nuevo = (ord(c) - ord('A') + desp) % 26 + ord('A')
        resultado += chr(nuevo)
        j += 1
    else:
        resultado += c
print(resultado)

Ejercicio 3: Divisores de N (10 pts)

Encuentra todos los divisores de N ordenados.

Entrada: 28
Salida: 1 2 4 7 14 28
👁️ Ver solución
n = int(input())
divs = []
for i in range(1, int(n**0.5) + 1):
    if n % i == 0:
        divs.append(i)
        if i != n // i:
            divs.append(n // i)
print(" ".join(map(str, sorted(divs))))

Ejercicio 4: Número perfecto (12 pts)

Determina si N es perfecto (igual a suma de sus divisores propios).

Entrada: 28
Salida: SI (1+2+4+7+14=28)
👁️ Ver solución
n = int(input())
suma = 0
for i in range(1, n):
    if n % i == 0:
        suma += i
print("SI" if suma == n else "NO")

Ejercicio 5: Fibonacci hasta N (10 pts)

Muestra todos los Fibonacci menores que N.

Entrada: 50
Salida: 0 1 1 2 3 5 8 13 21 34
👁️ Ver solución
n = int(input())
fibs = [0, 1]
while fibs[-1] + fibs[-2] < n:
    fibs.append(fibs[-1] + fibs[-2])
print(" ".join(map(str, fibs)))