Recientemente comencé a resolver preguntas sobre jueces en línea. Estoy atascado en this question in SPOJ:SPOJ: barajamiento de cartas
Aquí es un algoritmo para barajar cartas N:
- Las tarjetas se dividen en pilas iguales K, donde K es un factor de N.
- La parte inferior N/Las cartas K pertenecen a la pila 1 en el mismo orden (por lo que la carta inferior de la pila inicial es la carta inferior de la pila 1).
- Las siguientes cartas N/K de la parte inferior pertenecen al montón 2, y así sucesivamente.
- Ahora la primera carta de la pila mezclada es la carta superior de la pila 1. La siguiente carta es la carta superior de la pila 2, ..., la carta K de la pila mezclada es la carta superior de la pila K. Luego (K + 1) es la carta que está ahora en la parte superior de la pila 1, la (K + 2) nd es la carta que ahora está en la parte superior de la pila 2, y así sucesivamente.
Por ejemplo, si N = 6 y K = 3, el orden de una baraja de cartas "ABCDEF" (de arriba a abajo) cuando se baraja una vez cambiará a "ECAFDB".
Dados N y K, ¿cuál es el menor número de barajados necesarios después de los cuales la pila se restaura a su orden original?
He intentado simular pero excede el límite de tiempo. ¿Hay alguna ecuación matemática?
x = (x% K) * (N/K) + (Nx)/K - 1 .... donde x comienza desde 0 .... ¿algo mejor? – vastutsav
No estoy seguro de que tenga su idea. La respuesta es fórmula directa de la longitud de las cadenas como se describe en mi publicación. –
m lo siento por no ser más articulado ... comenzaremos con el valor x = 0 ... luego, usando la fórmula anterior recursivamente obtenemos una nueva posición de la carta xth ... una vez que la tarjeta regrese a la posición 0, tenemos la configuración original ... contamos el número de iteraciones requeridas en todo el proceso ... O podemos mantener una tabla del siguiente paso ... ¿hay algún mejor enfoque? cualquier cosa de teoría de grupo? – vastutsav