Bối cảnh
Vì vậy, tất cả chúng ta đều biết bằng chứng kinh điển diễn ra như sau:
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!)
Trong Tất nhiên, sai lầm là bạn không thể chia cho 0. Vì a = b, a - b = 0, do đó, có một phép chia ẩn cho 0.
Các thách thức
Bạn phải nhân rộng bằng chứng này. Đầu tiên, khai báo hai số nguyên a và b (không quan trọng bạn gọi chúng là gì) bằng nhau. Sau đó khai báo aMod và bMod là các phiên bản có thể sửa đổi của a và b và ban đầu bằng a và b, tương ứng. Bạn phải nhân cả hai với a, sau đó trừ b * b từ cả hai. Sau đó, bạn phải chia cho a - b và sau đó chia chúng cho b (hoặc a) để có được. Sau đó, in ra aMod và bMod với dấu bằng giữa chúng.
Đồ lót
Tất nhiên, vì bạn đã khai báo a và b bằng nhau, a - b = 0 và chia cho 0 gây ra lỗi. Vì vậy, bạn phải sáng tạo giả nó. Ngoài ra, vì bạn đang cố gắng sao chép bằng chứng, kết quả trên tất cả các thao tác trên aMod và bMod không được bằng nhau khi được in. Họ không phải bằng chính xác 2 và 1, chỉ hai số không bằng nhau.
Đây là một ví dụ:
#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;
}
Có thể không phải là tốt nhất, nhưng nó minh họa điểm.
Tiền thưởng
Thay vì in dấu bằng, bạn chỉ có thể in ra hai biến (aMod và bMod), sau đó có mã xuất hiện để so sánh hai biến cho đẳng thức nhưng thực tế nằm ở chỗ chúng bằng nhau (và in một số dạng true
).
Hãy nhớ rằng, đây là một cuộc thi phổ biến, vì vậy số lượng người ủng hộ cao nhất sẽ giành chiến thắng.
Ngoài ra, một phiên bản mới của toán học có tên là Toán học 2.0 đã sử dụng các sơ hở tiêu chuẩn tự động làm mất hiệu lực một bằng chứng.