🔴 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)))