¡Realmente me gusta este en Codeforces!
Piénselo de la manera inversa, es decir, suponga que el ganador terminará jugando X juegos. Entonces uno de ellos fue la final, es decir, antes de la final, jugó X – 1 juegos y noqueó a X – 1 jugadores.
Además, utilizamos una estrategia codiciosa para hacer que el subcampeón (la persona que perderá ante el ganador en la final) juegue la cantidad mínima de juegos que pueda y elimine la cantidad mínima de jugadores. Antes de la final, debe haber jugado, al menos, (X – 1) – 1 = X – 2.
- ¿Existe algún algoritmo de procesamiento de imágenes para mejorar tanto la calidad como la resolución de una imagen usando otras imágenes de la misma área?
- ¿Hay diseñadores que diseñan algoritmos?
- ¿Por qué hay una necesidad de matrices dinámicas si tenemos matrices de longitud variable?
- ¿Qué es la clasificación estable?
- ¿Cuáles son algunos de los diferentes casos que debería considerar usar matrices bidimensionales sobre matrices unidimensionales en Java?
Entonces, nuestra relación se convierte
f (X) = f (X – 1) + f (X – 2)
donde f (X) es el número de jugadores y X son los juegos jugados por el ganador.
Por supuesto, f (2) = 1 (el ganador solo puede jugar 1 juego) yf (3) = 2 (el ganador noquea a los otros dos jugadores).
¿Luce familiar? Es solo la secuencia de Fibonacci.
Un script rápido de Python me dice que el número 88 de Fibonacci (a partir de 1, 1) es 1100087778366101931, que es mayor que 10 ^ 18.
Entonces, solo enumere los primeros 88 números de Fibonacci y encuentre el índice de límite inferior (el número más grande que es menor o igual que) la entrada y listo, esa es su respuesta.