O fundo
Então, todos nós sabemos a prova clássica que é assim:
a = b
a² = ab
a² - b² = ab - b²
(ab) (a + b) = b (ab)
(a + b) = b
b + b = b
2b = b
2 = 1 (Ha ha!)
De claro, o erro é que você não pode dividir por 0. Como a = b, a - b = 0, houve uma divisão oculta por 0.
O desafio
Você precisa replicar essa prova. Primeiro, declare dois números inteiros aeb (não importa como você os chama) iguais. Em seguida, declare aMod e bMod como versões modificáveis de aeb e inicialmente iguais a eeb, respectivamente. Você deve multiplicar os dois por a e subtrair b * b de ambos. Você deve então dividir por a - b e depois dividi-los por b (ou a) para obter. Em seguida, imprima aMod e bMod com um sinal de igual entre eles.
The Underhanded
Obviamente, como você declarou aeb igual a, a - b = 0 e a divisão por 0 causa um erro. Então você deve fingir de forma criativa. Além disso, como você está tentando replicar a prova, o resultado de todas as operações no aMod e no bMod não deve ser igual quando impresso. Eles não precisam ser exatamente 2 e 1, apenas dois números que não são iguais.
Aqui está um exemplo:
#include <iostream>
#define subtract(a, b) a - b
using namespace std;
int main()
{
int a = 4, b = 4;
int a_2 = a, b_2 = b;
a_2 *= a;
b_2 *= b;
a_2 -= b * b;
b_2 -= b * b;
a_2 = a_2 / subtract(a, b);
b_2 = b_2 / subtract(-b, -a); // a - b == (-b) - (-a)
a_2 /= a;
b_2 /= a;
cout << a_2 << " = " << b_2 << " because I did the same operations on both of them.";
return 0;
}
Talvez não seja o melhor, mas ilustra o ponto.
Bônus secreto
Em vez de imprimir o sinal de igual, você pode imprimir apenas as duas variáveis (aMod e bMod) e, em seguida, ter um código que pareça comparar as duas variáveis em termos de igualdade, mas na realidade é que elas são iguais (e imprimem alguma forma de true
).
Lembre-se, este é um concurso de popularidade, portanto, o maior número de votos positivos vence.
Além disso, uma nova versão da matemática chamada Matemática 2.0 fez uso de brechas padrão para invalidar automaticamente uma prova.