Para determinar quantos voluntários serão necessários para descobrir o barril contaminado teríamos que seguir o seguinte procedimento:
- Vamos numerar cada barril de 1 a 1000
- Vamos escrever em cada barril a representação binária do número. Por exemplo, a representação binária do número um é 0000000001 e o número mil é 1111101000 (revise seu conhecimento sobre notação binária aqui)
- Precisamos de um voluntário para cada posição da notação binária, ou seja, como o número de barris é 1000 e a representação desse número ocupa 10 dígitos precisaremos de 10 voluntários.
- Cada um dos 10 voluntários também recebe um número de 1 a 10, representando os dígitos binários da direita para a esquerda
Agora vamos entender como prosseguir: cada voluntário precisará beber um gole do chopp do barril cujo número, em binário, contém o valor 1 na posição equivalente ao número do voluntário.
Vamos ver alguns exemplos:
- O barril 15 tem representação binária 0000001111 logo os voluntários 1, 2, 3 e 4 beberão desse barril
- O barril 345 tem representação binária 0101011001 logo os voluntários 1, 4, 5, 7 e 9 beberão desse barril
- O barril 980 tem representação binária 1111010100 logo os voluntários 3, 5, 7, 8, 9 e 10 beberão desse barril
Agora basta aguardar 1 hora e chegar quais dos voluntários estão passando mal.
Suponha que os voluntários 3, 4, 5 e 7 tenham passado mal, basta montar o número binário que representa o conjunto de voluntários para descobrir o barril contaminado, que no caso é 0001011100 cujo valor decimal indica o barril 92 como sendo o contaminado. Caso apenas o voluntário 1 passe mal, teríamos em binário 0000000001 e o barril contaminado seria o 1. Se os voluntários 4, 6, 7, 8, 9 e 10 passarem mal, o número binário que os representa é 1111101000 e o barril contaminado seria o milésimo.
Portanto serão necessários apenas 10 voluntários para descobrir o barril contaminado.