El fondo
Entonces, todos conocemos la prueba clásica que dice así:
a = b
a² = ab
a² - b² = ab - b²
(ab) (a + b) = b (ab)
(a + b) = b
b + b = b
2b = b
2 = 1 (¡Ja, ja!)
De Por supuesto, el error es que no se puede dividir por 0. Como a = b, a - b = 0, entonces hubo una división oculta por 0.
El reto
Tienes que replicar esta prueba. Primero, declare dos enteros a y b (no importa cómo los llame) que sean iguales. Luego declare que aMod y bMod son versiones modificables de a y b e inicialmente iguales a a y b, respectivamente. Debes multiplicarlos por a, luego restar b * b de ambos. Luego debe dividir por a - b y luego dividirlos por b (o a) para obtener. Luego, imprima aMod y bMod con un signo igual entre ellos.
El descuidado
Por supuesto, dado que declaró a y b como iguales, a - b = 0, y dividir por 0 produce un error. Entonces debes fingir creativamente. Además, debido a que está intentando replicar la prueba, el resultado en todas las operaciones en aMod y bMod no debe ser igual cuando se imprime. No tienen que ser exactamente iguales a 2 y 1, solo dos números que no son iguales.
Aquí hay un ejemplo:
#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;
}
Quizás no sea el mejor, pero ilustra el punto.
Bonus sin ayuda
En lugar de imprimir el signo igual, puede imprimir solo las dos variables (aMod y bMod), y luego tener un código que parece comparar las dos variables para la igualdad, pero en realidad radica en que son iguales (e imprime alguna forma de true
).
Recuerde, este es un concurso de popularidad, por lo que gana el mayor número de votos a favor.
Además, una nueva versión de las matemáticas llamada Mathematics 2.0 ha hecho uso de lagunas estándar que invalidan automáticamente una prueba.