Pergunte ao Mago #357
Utilizando cada dígito de 1 a 9 exatamente uma vez, componha três frações, cada uma com um dígito no numerador e dois dígitos no denominador, em que a soma das três frações seja um.
Por exemplo, 8/16 + 9/27 + 3/24 satisfaz todas as condições, exceto que a soma é igual a 23/24, e não a 1.
Existem permut(9,3)*permut(6,3)*permut(3,3)/fact(3) = 60.480 permutações possíveis para analisar e encontrar a resposta. Devo admitir que tentei por pelo menos uma hora, por tentativa e erro, e não encontrei uma solução.
Então, escrevi um programa para percorrer todas as 362.880 maneiras possíveis de ordenar os nove dígitos e testei todas elas. A parte complicada foi percorrer todas as formas possíveis de ordenar os nove números. Veja como fazer isso, usando ordenação lexicográfica.
- Coloque todos os nove elementos em uma matriz, organizados do menor para o maior.
- Encontre o último elemento da matriz que seja maior que o elemento seguinte. Se nenhum for encontrado, encerre o programa.
- Começando pelo elemento seguinte ao da etapa 2, encontre o último elemento na matriz que seja maior que o da etapa 2.
- Troque os elementos da matriz das etapas 2 e 3.
- Inverta a ordem dos elementos na matriz, começando pelo elemento seguinte ao da etapa 2 e seguindo até o final.
- Voltar para a etapa 2
Seguindo esse processo, você encontrará a resposta correta seis vezes, uma vez para cada uma das seis maneiras de ordenar as três frações.
[spoiler=Código]
Escrevi o seguinte código para ordenar cada dígito de 1 a 9 em ordem lexicográfica e testar se cada um era uma solução.
vazio três_frações(vazio)
{
int i, x_max, y_max, temp_array[100], hold, pt;
int lex_array[] = { 1,2,3,4,5,6,7,8,9 };
int num_elements = sizeof(lex_array) / sizeof(lex_array[0]);
int contagem = 0;
bool stop = falso;
total duplo 3;
cerr << "Número de elementos =\t" << num_elements << "\n";
fazer
{
contar++;
tot3 = (double)lex_array[0] / (double)(10 * lex_array[1] + lex_array[2]);
tot3 += (double)lex_array[3] / (double)(10 * lex_array[4] + lex_array[5]);
tot3 += (double)lex_array[6] / (double)(10 * lex_array[7] + lex_array[8]);
se (tot3 == 1.0)
{
cerr << count << "\t";
cerr << lex_array[0] << "/" << lex_array[1] << lex_array[2] << " + ";
cerr << lex_array[3] << "/" << lex_array[4] << lex_array[5] << " + ";
cerr << lex_array[6] << "/" << lex_array[7] << lex_array[8] << "\n";
}
x_max = -1;
para (i = 0; i < (num_elementos - 1); i++)
{
se (lex_array[i] < lex_array[i + 1])
x_max = i;
}
se (x_max >= 0)
{
y_max = 0;
para (i = x_max + 1; i < num_elementos; i++)
{
se (lex_array[x_max] < lex_array[i])
y_max = i;
}
hold = lex_array[x_max];
lex_array[x_max] = lex_array[y_max];
lex_array[y_max] = hold;
se (x_max + 1 < num_elementos - 1) // inverter
{
para (i = x_max + 1; i < num_elementos; i++)
{
temp_array[i] = lex_array[i];
}
pt = 0;
para (i = x_max + 1; i < num_elementos; i++)
{
lex_array[i] = temp_array[num_elements - 1 - pt];
pt++;
}
}
}
outro
parar = verdadeiro;
} enquanto (parar == falso);
}
Essa pergunta é feita e discutida no meu fórum, Wizard of Vegas .
Um homem tinha um barril de vinho de 10 galões e um jarro. Certo dia, ele encheu o jarro com vinho e completou o barril com água. Mais tarde, quando o vinho e a água já estavam bem misturados, ele encheu outro jarro com vinho e completou o barril novamente com água. O barril ficou então com quantidades iguais de vinho e água.
Qual era a capacidade da jarra?
Seja j = volume da jarra.
Após o primeiro enchimento do jarro, restaram 10-j galões de vinho no jarro. Depois que a água substituiu o vinho, a proporção de vinho para todo o barril foi (10-j)/10.
Após a jarra retirar o vinho diluído, restaram 10 galões de vinho diluído no barril. A quantidade de vinho puro no vinho diluído pode ser expressa como:
(10-j)*((10-j)/10) = 5
(10-j)^2 = 50
j² - 20j + 100 = 50
j² - 20j + 50 = 0
j = (20 +/- sqrt(400-200))/2
j = (20 +/- 10*sqrt(2))/2
j = 10 +/- 5*sqrt(2)
O jarro não pode ser maior que o barril, portanto devemos usar o sinal negativo:
j = 10 - 5*sqrt(2) =~ aproximadamente 2,92893218813452 galões.
Essa pergunta é feita e discutida no meu fórum, Wizard of Vegas .
Um dado de seis lados é lançado repetidamente até que a soma dos lançamentos seja igual ou superior a 13. Quais são a média, a mediana e a moda do total final?
Mediana = 14
Modo = 13
Para isso, precisei usar uma Cadeia de Markov. A tabela a seguir mostra a probabilidade de cada total final de acordo com a soma acumulada na coluna da esquerda. Comece com os casos óbvios para totais de 13 a 18. Em seguida, para somas acumuladas de 0 a 12, calcule a média das seis células abaixo.
As probabilidades para o estado inicial podem ser encontradas na primeira linha para uma soma de 0.
Cadeia de Markov
| Soma dos Rolos | 13 | 14 | 15 | 16 | 17 | 18 |
|---|---|---|---|---|---|---|
| 0 | 0,279263 | 0,236996 | 0,192313 | 0,145585 | 0,097371 | 0,048472 |
| 1 | 0,290830 | 0,230791 | 0,188524 | 0,143842 | 0,097114 | 0,048899 |
| 2 | 0,293393 | 0,241931 | 0,181893 | 0,139625 | 0,094943 | 0,048215 |
| 3 | 0,289288 | 0,245178 | 0,193717 | 0,133678 | 0,091410 | 0,046728 |
| 4 | 0,280369 | 0,242560 | 0,198450 | 0,146988 | 0,086950 | 0,044682 |
| 5 | 0,268094 | 0,235687 | 0,197878 | 0,153768 | 0,102306 | 0,042267 |
| 6 | 0,253604 | 0,225827 | 0,193419 | 0,155611 | 0,111500 | 0,060039 |
| 7 | 0,360232 | 0,193566 | 0,165788 | 0,133380 | 0,095572 | 0,051462 |
| 8 | 0,308771 | 0,308771 | 0,142104 | 0,114326 | 0,081919 | 0,044110 |
| 9 | 0,264660 | 0,264660 | 0,264660 | 0,097994 | 0,070216 | 0,037809 |
| 10 | 0,226852 | 0,226852 | 0,226852 | 0,226852 | 0,060185 | 0,032407 |
| 11 | 0,194444 | 0,194444 | 0,194444 | 0,194444 | 0,194444 | 0,027778 |
| 12 | 0,166667 | 0,166667 | 0,166667 | 0,166667 | 0,166667 | 0,166667 |
| 13 | 1.000000 | 0,000000 | 0,000000 | 0,000000 | 0,000000 | 0,000000 |
| 14 | 0,000000 | 1.000000 | 0,000000 | 0,000000 | 0,000000 | 0,000000 |
| 15 | 0,000000 | 0,000000 | 1.000000 | 0,000000 | 0,000000 | 0,000000 |
| 16 | 0,000000 | 0,000000 | 0,000000 | 1.000000 | 0,000000 | 0,000000 |
| 17 | 0,000000 | 0,000000 | 0,000000 | 0,000000 | 1.000000 | 0,000000 |
| 18 | 0,000000 | 0,000000 | 0,000000 | 0,000000 | 0,000000 | 1.000000 |
Essa pergunta é feita e discutida no meu fórum, Wizard of Vegas .