jQuery

математика на скорость

Ребенку дали задание о_О. Нужно на скорость методом подбора решать подобного рода задачи. Метод подбора звучит как то не очень, поэтому не столько важно решение конкретно этих примеров, сколько алгоритм т. е. подход как лучше решать подобного класса задачи...

Задание: Даны числа без знаков, можно использовать любые, сложение, вычитание, умножение, деление, ставить в скобки, возводить в степень... Т. е. можно использовать любые арифметические дейсвия с целью получить заданный ответ...

3 6 5 9 = 206
5 6 2 8 = 262
8 1 9 5 = 402
7 3 5 2 = 314
7 6 8 1 = 529
2 8 7 2 = 823
9 5 8 2 = 317
6 5 7 4 = 184
5 8 1 8 = 124
7 4 6 4 = 152
Erjan Dinov
Erjan Dinov
110
Если тебя интересует компьютерный алгоритм, то полный перебор действий здесь вполне годится - на решение каждого примера компьютеру понадобятся буквально микросекунды.
Если же думать мозгами - то надо думать.
Возьмем первый пример
3 6 5 9 = 206
Явно видно, что 206 не делится на 3, поэтому делить его на 3, 6 или 9 смысла нет, ну и на 5 тоже.
206 - это 2*103. И приехали, потому что 103 - простое число, получить которое из 3 других будет проблематично.
Пока перспективнее всего выглядит прибавить 9.
Тогда имеем 3 6 5 215
Уже кое-что. По крайней мере, 215 делится на 5. Проблема в том, что у нас оставтся
3 6 43 - опять же простое число, которое нам никак не в кассу.
Значит мы пошли по неверному (скорее всего) пути.
Ну и так далее. Думаем и строим дерево вариантов. Какой ответ в этом примере - мне додумывать лень. Но как-то это дело должно решаться...
ЕИ
Евгений Иванов
64 131
Лучший ответ
это скуШное задание...
Darth Sidious
Darth Sidious
76 878
Че тут думать?
3/3 + 3/3 + 3/3 + .и так 206 слагаемых.
Азиз Гасанов
Азиз Гасанов
76 843
математика не любит скорости и ошибок
Мерей Джамбаев
Мерей Джамбаев
52 894
Тоже попробую, как Jurijus Zaksas, решить первую:

3 6 5 9 = 206

3*65=195 - не подходит, так как прибавлением 9 мы получим только 204, а другие способы использования цифры 9 уведут ещё дальше от нужного результата.
36*5=180 - аналогично.
3^6=27^2=729 - опять не пойдёт - 5 и 9 никак не пристроишь: если добавить "*5/9", то получится 405.

Попробуем с другого конца:
206-9=197
197-5=192
197+5=202
Ничего...

206+9=215
Уже интересно, потому что делится на 5
215/5=43
Но из 3 и 6 не получишь 43

206+59=265
Аналогично...

206-59=147
Аналогично...

206-36=170
Из 5 и 9 никак не получить 170...

5+9=14
6*14=84 - тупик.

6^5=7776 - опять ничего не даст.

5^9 - заведомо слишком много, чтобы можно было что-то нужное получить.

3+6*5*9=273

3*65+9=204

В общем, вывод тот же - только подбор с добавлением каких-то дополнительных соображений (эвристик), которые позволяют сократить перебор, отбросить неподходящие варианты, не проверяя их.

PS Несколько странный выбор темы для размещения этого вопроса, если его нельзя решать путём программирования.
Серега Баранов
Серега Баранов
14 270
> Можно использовать любые
https://ru.wikipedia.org/wiki/Операция_(математика)
Может, ограничимся конечным набором операций?
Иван Литвинов
Иван Литвинов
13 596
Проще всего закодить полный перебор, он в данном случае не очень сложный. Для компьютера.

Другой алгоритм что-то так с ходу не придумывается. В голову лезет построение слоистого графа результатов операций, сначала над парами чисел, потом над парами "пара-число" и "пара-пара", потом остальных операций. Прелесть такого подхода в том, что снимается проблема расстановки скобок. Совсем.
Arto Davo
Arto Davo
9 254
ПЕ - РЕ -
БОР
другого нет
Виктор Мороз
Виктор Мороз
1 963
"Ребенку дали задание о_О" смешной смайлик ))