Фон
Отже, ми всі знаємо класичний доказ, який іде так:
а = Ь
a² = AB
a² - b² = AB - b²
(аb) (а + б) = Ь (аb)
(а + б) = Ь
Ь + B = B
2b = Ь
2 = 1 (Ха!)
З Звичайно, помилка полягає в тому, що ви не можете розділити на 0. Оскільки a = b, a - b = 0, то прихований поділ було 0.
Змагання
Ви повинні повторити цей доказ. По-перше, оголосимо два цілих числа a і b (не має значення, як ти їх називаєш) рівними. Потім оголосити aMod і bMod модифікованими версіями a і b і спочатку дорівнюють a і b відповідно. Ви повинні помножити їх обох на a, а потім відняти b * b від обох. Потім потрібно ділити на a - b, а потім розділити їх на b (або a), щоб отримати. Потім роздрукуйте aMod та bMod із знаком рівності між ними.
Недосвідчені
Звичайно, оскільки ви оголосили a і b рівними, a - b = 0, і ділення на 0 викликає помилку. Тому ви повинні це творчо підробити. Крім того, оскільки ви намагаєтесь повторити доказ, результат при всіх операціях на aMod та bMod не повинен бути рівним при друкуванні. Вони не повинні дорівнювати рівно 2 і 1, лише два числа, які не рівні.
Ось приклад:
#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;
}
Можливо, не найкращий, але це ілюструє суть.
Бонус занижений
Замість того, щоб надрукувати знак рівності, ви можете роздрукувати лише дві змінні (aMod і bMod), а потім мати код, який видається для порівняння двох змінних для рівності, але фактично полягає в тому, що вони рівні (і друкує певну форму true
).
Пам'ятайте, що це змагання за популярність, тому виграє найбільша кількість нагород.
Крім того, нова версія математики під назвою Mathematics 2.0 використала стандартні лазівки, які автоматично визнають недійсним доказ.