Eu estava olhando na web e encontrei esse quebra-cabeça do Google Code Jam. Eu realmente gostei, então decidi postar aqui.
Novo jogo de loteria
A loteria está mudando! A loteria costumava ter uma máquina para gerar um número vencedor aleatório. Mas, devido a problemas de trapaça, a loteria decidiu adicionar outra máquina. O novo número vencedor será o resultado da operação AND bit a bit entre os dois números aleatórios gerados pelas duas máquinas.
Para encontrar o AND bit a bit de X e Y , escreva-os ambos em binário; então um bit no resultado em binário terá 1 se os bits correspondentes de X e Y forem 1 e 0 caso contrário. Na maioria das linguagens de programação, o AND bit a bit de X e Y é escrito X&Y .
Por exemplo: A máquina antiga gera o número 7 = 0111 . A nova máquina gera o número 11 = 1011 . O número vencedor será (7 AND 11) = (0111 AND 1011) = 0011 = 3 .
Com essa medida, a Loteria espera reduzir os casos de reclamações fraudulentas, mas, infelizmente, um funcionário da empresa da Loteria vazou as seguintes informações: a máquina antiga sempre gera um número inteiro não negativo menor que A e a nova sempre gera um número inteiro não negativo menos de B .
Catalina quer ganhar essa loteria e para dar-lhe uma tentativa, ela decidiu comprar todos os inteiros não negativos menos de K .
Dado A , B e K , Catalina gostaria de saber de quantas maneiras diferentes as máquinas podem gerar um par de números que a tornarão uma vencedora.
Você poderia ajudá-la?
EntradaA primeira linha da entrada fornece o número de casos de teste, linhas T. T. seguem, cada linha com três números AB K.
ResultadoPara cada caso de teste, imprima uma linha contendo "Caso nº x: y", onde x é o número do caso de teste (começando em 1) e y é o número de pares possíveis que as máquinas podem gerar para tornar a Catalina uma vencedora.
Limites1 ≤ T ≤ 100. Conjunto de dados pequeno
1 ≤ A ≤ 1000. 1 ≤ B ≤ 1000. 1 ≤ K ≤ 1000. Grande conjunto de dados
1 ≤ A ≤ 109. 1 ≤ B ≤ 109. 1 ≤ K ≤ 109. Amostra
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 88No primeiro caso de teste, esses são os 10 pares possíveis gerados pela máquina antiga e nova, respectivamente, que a tornarão uma vencedora: <0,0>, <0,1>, <0,2>, <0,3> , <1,0>, <1,1>, <1,2>, <1,3>, <2,0> e <2,1>. Observe que <0,1> não é o mesmo que <1,0>. Além disso, embora o par <2, 2> pudesse ser gerado pelas máquinas, não faria Catalina vencer, já que (2 AND 2) = 2 e ela só comprou os números 0 e 1.
Aqui está o link para o problema real: https://code.google.com/codejam/contest/2994486/dashboard#s=p1
Isso é código-golfe, então o código mais curto vence. Boa sorte