Скрыть
[tutorial] Решаем капчу с квадратным уравнением в уме
Тут в обсуждении пользы от образования anonymous задаёт вопрос:
> Как ещё я капчу [с квадратным уравнением] решать буду?
Отвечаю: в уме!
Спокойно, без паники! Нам не потребуется ни знание формулы корней квадратного уравнения, ни умение вычислять квадратный корень произвольного числа. Нам всего лишь потребуется умение умножать/делить на 2, 3, 5.
Итак, возьмём простой пример капчи и решим её.
-x2 + 3x + 88 = 0 (1)
max(x1, x2) = ? (2)
Нам также помогут некоторые априорные знания о корнях этого уравнения. Гляда на исходные коды капчи можно узнать, что корни - это целые числа в диапазоне [-20; 20]. Там же можно прочитать подсказку про теорему Виета, откуда получаем два уравнения (знаки пока игнорируем):
x1 ⋅ x2 = 88 (3)
x1 + x2 = 3 (4)
Будем делить 88 на 2, пока оба числа не окажутся меньше 20:
88 = 44 ⋅ 2 = 22 ⋅ 4 = 11 ⋅ 8 (5)
Получили два числа 11 и 8 - это модули наших корней. Теперь определим знаки этих чисел. Дабы не запоминать в какой части у Виеты стоит минус просто посчитаем их:
- знак при коэффициенте у x2,
- знак при коэффициенте у x,
- знак у 3 в уравнении (4).
Количество минусов должно быть нечётным. Первые два знака нам очевидны из исходного уравнения (1), а знак у 3 мы вычисляем:
-x
2 + 3x => 1 "минус" => у 3 в уравнении (4) знак "плюс".
(±11) + (±8) = 3 (6)
Перебирая плюсы и минусы в (6) получаем корректное уравнение:
11 + (-8) = 3 (7)
Следовательно корни нашего исходного уравнения (1) будут:
x
1 = 11 (8)
x
2 = -8 (9)
По условиям (2) нам нужен x
1, т. е. 11. Всё, уравнение решено, вбиваем полученный ответ в поле капчи и смотрим на результат - если сообщение добавлено, значит мы нигде не ошиблись.
Рассмотрим ещё несколько примеров. Для начала возьмём неприведённое уравнение:
-4x
2 - 128x - 960 = 0 (10)
min(x
1, x
2) = ? (11)
Прежде чем переходить к делению 960 на 2, нам нужно и 960 и 128 поделить на коэффициент при x
2, т. е. на 4 (знаки игнорируем).
x
1 ⋅ x
2 = 960 : 4 = 480 : 2 = 240 (12)
x
1 + x
2 = 128 : 4 = 64 : 2 = 32 (13)
Ну а теперь поехали:
240 = 120 ⋅ 2 = 60 ⋅ 4 = 30 ⋅ 8 = 15 ⋅ 16 (14)
(±15) + (±16) ≠ (±32) (15)
Не получилось! Ничего страшного, попробуем пересмотреть (14):
15 ⋅ 16 = (5 ⋅ 3) ⋅ (8 ⋅ 2) = (5 ⋅ 2) ⋅ (8 ⋅ 3) = 10 ⋅ 24 = 20 ⋅ 12 (16)
(±20) + (±12) = (±32) (17)
Теперь определим знак у 32: знак должен быть "минус", т. к. -4 и -128 дают два "минуса", а надо либо один "минус", либо три "минуса". Итого, (17) превращается в:
(±20) + (±12) = -32 (18)
-20 + (-12) = -32 (19)
Следовательно корни уравнения (10) будут -20 и -12, из которых условию (11) удовлетворяет -20. Проверяем, вбивая ответ в капчу.
Ещё пару примеров бегло.
-2x
2 - 48x - 216 = 0
-x
2 - 24x - 108 = 0
x
1 ⋅ x
2 = 108 = 54 ⋅ 2 = 27 ⋅ 4 = 9 ⋅ 12 = 18 ⋅ 6
-18 + -6 = -24
x
1 = -18
x
2 = -6
-5x
2 - 155x - 1200 = 0
-x
2 - 31x - 240 = 0
x
1 ⋅ x
2 = 240 = 16 ⋅ 15 (см. (14))
-16 + -15 = -31
x
1 = -16
x
2 = -15
Сложный пример:
5x
2 + 180x + 1615 = 0
x
2 + 36x + 323 = 0
x
1 ⋅ x
2 = 323 = [ээээ..., обратимся к консоли: factor 323] = 17 ⋅ 19
-17 + -19 = -36
x
1 = -17
x
2 = -19
На этом всё. Практикуйтесь, благо есть на чём. Удачи в нелёгком деле деления!
PS: Учим Unicode
00b1 - плюс-минус: ±
2260 - не равно: ≠
Re:[tutorial] Решаем капчу с квадратным уравнением в уме
Отредактировано AMUR-WOLF по причине "не указана"
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0