Estaba buscando en la web y encontré este Google Code Jam Puzzle. Realmente me gustó, así que decidí publicarlo aquí.
Nuevo juego de lotería
¡La lotería está cambiando! La Lotería solía tener una máquina para generar un número ganador aleatorio. Pero debido a problemas de trampa, la Lotería ha decidido agregar otra máquina. El nuevo número ganador será el resultado de la operación bit-AND entre los dos números aleatorios generados por las dos máquinas.
Para encontrar el bit-AND de X e Y , escríbalos en binario; entonces un bit en el resultado en binario tiene un 1 si los bits correspondientes de X e Y eran ambos 1, y un 0 en caso contrario. En la mayoría de los lenguajes de programación, el AND bit a bit de X e Y se escribe X&Y .
Por ejemplo: la máquina anterior genera el número 7 = 0111 . La nueva máquina genera el número 11 = 1011 . El número ganador será (7 Y 11) = (0111 Y 1011) = 0011 = 3 .
Con esta medida, la Lotería espera reducir los casos de reclamos fraudulentos, pero desafortunadamente un empleado de la compañía de la Lotería ha filtrado la siguiente información: la máquina vieja siempre generará un número entero no negativo menor que A y la nueva siempre generará un entero no negativo menor que B .
Catalina quiere ganar esta lotería y para darle una oportunidad se decidió a comprar todos los enteros no negativos menor que K .
Dado A , B y K , a Catalina le gustaría saber de cuántas maneras diferentes las máquinas pueden generar un par de números que la convertirán en una ganadora.
¿Podrías ayudarla?
EntradaLa primera línea de la entrada da el número de casos de prueba, las líneas T. T siguen, cada línea con tres números AB K.
SalidaPara cada caso de prueba, envíe una línea que contenga "Caso #x: y", donde x es el número de caso de prueba (a partir de 1) e y es el número de pares posibles que las máquinas pueden generar para que Catalina sea una ganadora.
Límites1 ≤ T ≤ 100. Conjunto de datos pequeño
1 ≤ A ≤ 1000. 1 ≤ B ≤ 1000. 1 ≤ K ≤ 1000. Gran conjunto de datos
1 ≤ A ≤ 109. 1 ≤ B ≤ 109. 1 ≤ K ≤ 109. Muestra
Input Output 5 Case #1: 10 3 4 2 Case #2: 16 4 5 2 Case #3: 52 7 8 5 Case #4: 2411 45 56 35 Case #5: 14377 103 143 88En el primer caso de prueba, estos son los 10 pares posibles generados por la máquina antigua y la nueva, respectivamente, que la convertirán en una ganadora: <0,0>, <0,1>, <0,2>, <0,3> , <1,0>, <1,1>, <1,2>, <1,3>, <2,0> y <2,1>. Observe que <0,1> no es lo mismo que <1,0>. Además, aunque el par <2, 2> podría ser generado por las máquinas, Catalina no ganaría ya que (2 Y 2) = 2 y ella solo compró los números 0 y 1.
Aquí está el enlace para el problema real: https://code.google.com/codejam/contest/2994486/dashboard#s=p1
Este es el código de golf, por lo que gana el código más corto. Buena suerte