Задача про умножение с нестандартным решением
easy

Задача про умножение с нестандартным решением

Решаем двумя способами — как ребёнок и как программист

У этой задачи есть два решения — одно рассчитано на детей, второе — на взрослых суровых программистов. Какое сможете найти вы?

Сама задача выглядит так:

Надо найти, чему равны A и B.

Представим, что мы знаем только самое простое умножение, максимум — с двузначными числами. Начнём с самого первого действия умножения в столбик:

AB × A = 384

Так как AB — это A × 10 + B, то если разделить AB на 10, то получим число A,B. Получается, что A,B × A = 38,4 (потому что первую строку мы тоже делим на 10. 

А теперь следите за логикой. Это число — 38,4 — близко к квадрату числа A (A × A), и погрешность вносит только дробная часть. Представим, что её нет и посмотрим, квадрат какого числа максимально близко к 38,4:

5 × 5 = 25 → нет, слишком мало

6 × 6 = 36 → похоже на правду

7 × 7 = 49 → не, уже перебор

Получается, что число A — это 6. Зная это, подставим пока ноль вместо числа B и посмотрим, что получится:

60 × 6 = 360

Но у нас на второй строке стоит 384. Это значит, что B × 6 = 384 − 360 = 24. Получается, что B = 4.

Проверяем: 64 × 46 = 2944. Всё сходится, а значит, мы решили всё правильно.

Если мы будем решать эту задачу как программисты, то сразу заметим число 256 и вспомним, что 256 = 2 в восьмой степени. Это значит, что все его множители будут кратны двойке:

128 × 2

64 × 4

32 × 8

16 × 16

Число 256 получилось из умножения AB × B, то есть двузначного числа на однозначное. Из всех наших пар 128 × 2 не подходит, потому что 128 — трёхзначное число. И 16 × 16 тоже не подходит, потому что в этом случае мы умножаем не на однозначное, а на двузначное число.

Остаются пары 64 × 4 и 32 × 8. Но шаблону AB × B соответствует только пара 64 × 4, а значит, A = 6, а B = 4.

Для нетерпеливых есть решение, которое можно запустить и протестировать прямо в консоли: 

  1. Создаём цикл для переменной a, где мы перебираем значения a от 0 до 9.
  2. Внутри него такой же вложенный цикл для переменной b.
  3. Внутри этого вложенного цикла собираем два числа и перемножаем их. Чтобы собрать число ab, нужно a умножить на 10 и прибавить b. Аналогично для числа ba. Перемножаем их и сравниваем с искомым 2944.
  4. Если сравнение случилось, выводим результат в консоль

Итоговый код на JavaScript:

for (var a = 0; a <= 9; a++) {
	for (var b = 0; b <= 9; b++) {
		if ((a*10+b)*(b*10+a)==2944) {console.log(""+a+b+" * "+b+a+" = 2944")};
	}
}

Можете скопировать, вставить в консоль браузера и проверить. Результат будет таким:

46 * 64 = 2944
64 * 46 = 2944

Художник:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Алина Грызлова

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Вам может быть интересно
easy
[anycomment]
Exit mobile version