Требуется доказать или опровергнуть, что расставляя между четырьмя тройками знаки четырёх арифметических действий (всего 64 варианта), нельзя получить число 27. Можно, конечно, вручную перебрать все 64 варианта, это хоть и нудно, но не так уж и долго. Но мне очень любопытно, как пишут программы, которые делают это автоматически.

Заранее благодарю!

задан 12 Фев 11:46

10|600 символов нужно символов осталось
1

В данном случае ручной перебор совсем простой. Прежде всего, если мы пишем выражения без участия скобок, то в случае операций равного приоритета, всё выполняется в порядке следования. Скажем, a:b:c будет равно a/(bc), и a:b*c равно ac/b. Так обычно писать не принято из-за возможных двусмысленностей, но для головоломок это не важно.

Если знаков умножения/деления нет, то величина не больше суммы четырёх троек, то есть 12. Если умножение/деление всего одно, то получается 9 или 1, и тогда в сумме с остальными тройками получится не более 18. Если все действия будут умножениями или делениями, то в ответе будет 3 в степени с чётным целочисленным показателем. Наконец, если сложение/вычитание всего одно, то будет или (9 или 1)+-(9 или 1), или (3 в нечётной степени)+-3, или 3+-(3 в нечётной степени), что нигде не даёт 27.

С участием скобок получается другая задача, где 27 легко получить как (3+3+3)*3. Для таких задач легко написать программу (что не раз приходилось делать в Maple). Выражений тут будет уже 320, с учётом домножения на 5 (число способов расставить скобки -- это 3-е число Каталана). Я пишу подпрограмму, скажем, f(A,B), которая для двух множеств чисел находит множество чисел вида aob, где a из A, b из B, а "кружочек" -- одна из арифметических операций (с учётом того, что нельзя делить на ноль). Далее я формирую множества m1, m2, m3, m4, где m1={3}, m2=f(m1,m1)={0,1,6,9}, и затем m3=f(m2,m1)Uf(m1,m2), m4=f(m3,m1)Uf(m2,m2)Uf(m1,m3). Всё это и пишется, и вычисляется очень быстро. Для задачи со скобками, из 320 выражений получается всего 49 различных значений. При этом не возникает, например, число 11 (а также -4, так как знак "минус" ставим только между операндами). Здесь уже вручную исследовать всё до конца тяжеловато.

ссылка

отвечен 12 Фев 22:59

@falcao, большое спасибо!

(13 Фев 0:36) Казвертеночка
10|600 символов нужно символов осталось
Ваш ответ

Если вы не нашли ответ, задайте вопрос.

Здравствуйте

Математика - это совместно редактируемый форум вопросов и ответов для начинающих и опытных математиков, с особенным акцентом на компьютерные науки.

Присоединяйтесь!

отмечен:

×1,129
×229
×199
×51
×4

задан
12 Фев 11:46

показан
120 раз

обновлен
13 Фев 0:36

Отслеживать вопрос

по почте:

Зарегистрировавшись, вы сможете подписаться на любые обновления

по RSS:

Ответы

Ответы и Комментарии

Дизайн сайта/логотип © «Сеть Знаний». Контент распространяется под лицензией cc by-sa 3.0 с обязательным указанием авторства.
Рейтинг@Mail.ru