|
|
||||||
Задача по математике, 3 класс, пять вложенных циклов, делегаты. Есть ли короткое решение?17.03.2026, 11:27. Показов 954. Ответов 17
Метки нет (Все метки)
Здравствуйте. Есть задача из 3 класса по математике. Задача на картике. №13.
Описание: есть три массива чисел (3, 5, 7, 11) (19, 29, 47, 61) (13, 27, 39, 57). Нужно любое число из 1 массива сложить или вычесть или умножить или разделить на любое число из второго массива и результат сложить или вычесть или умножить или разделить на любое число из третьего массива. И получить в результате 100. Не знаю как ее нужно решать третьекласникам, возможно методом подобора. Я решил с помощью C#. Код получился примерно на 100 строк. Пять вложенных циклов, делегаты. Часто под такими задачами и такими решениями (на 100 строк) видел решения в пару строк с использованием LINQ, лямбда выражений и прочей магией C#. Можно ли эту задачу решить более коротким способом, чем мой?
0
|
||||||
| 17.03.2026, 11:27 | |
|
Ответы с готовыми решениями:
17
Отличие делегата от делегата с лямбда-выражением Разница лямбда выражения, делегата (\анонимного делегата), методом (\анонимных методов) |
|
fly
4951 / 4635 / 844
Регистрация: 13.04.2015
Сообщений: 9,820
|
||||||
| 17.03.2026, 12:50 | ||||||
Сообщение было отмечено sysrepos как решение
Решение
Без делегатов
1
|
||||||
|
14 / 13 / 1
Регистрация: 04.03.2014
Сообщений: 32
|
|||||||||||
| 17.03.2026, 14:41 | |||||||||||
|
I can, у вас dt.Compute(s, "") использует стандартные правила вычисления,
сначала умножение и деление, а потом сложение и вычитание. В результате:
sysrepos, моё решение:
2
|
|||||||||||
|
2738 / 1664 / 267
Регистрация: 19.02.2010
Сообщений: 4,396
|
||
| 17.03.2026, 15:12 | ||
|
Такая задача генерации значений, точнее, последовательного инкремента от 00000 до 33333, решается одним циклом. Пяти не нужно. Точнее, будет "обрамляющий" цикл, который берёт очередное число и проводит в соответствии с ним матем.вычисления, и будет один цикл в функции инкремента (для прохода по разрядам числа начиная с самого младшего). В таком виде решение задачи легко обобщается на бОльшее/произвольное число кругов в лабиринте - надо всего-то будет поменять в проге константу, задающую число разрядов для числа, кодирующего путь, ну и добавить нужное число массивов с числами-операндами. PS. Да - это перебираемое кодовое число (от 00000 до 33333, или с иным числом разрядов, и/или в иной системе счисления) надо реализовывать не в виде единого монолитного целого числа - а в виде массива значений разрядов, чтобы код оказался попроще.
2
|
||
|
14 / 13 / 1
Регистрация: 04.03.2014
Сообщений: 32
|
||
| 17.03.2026, 15:18 | ||
|
VTsaregorodtsev
0
|
||
|
2738 / 1664 / 267
Регистрация: 19.02.2010
Сообщений: 4,396
|
|
| 17.03.2026, 15:31 | |
|
zhigarartem, Лови, но на другом языке.
Функция по типу product() в Python
0
|
|
|
fly
4951 / 4635 / 844
Регистрация: 13.04.2015
Сообщений: 9,820
|
|||||||
| 17.03.2026, 15:39 | |||||||
2
|
|||||||
|
14 / 13 / 1
Регистрация: 04.03.2014
Сообщений: 32
|
|
| 17.03.2026, 16:02 | |
|
VTsaregorodtsev, можете решить задачу автора темы своим способом и показать код?
1
|
|
|
|
|||||||||||
| 17.03.2026, 18:09 | |||||||||||
|
class Resolver
1
|
|||||||||||
|
|
||
| Вчера, 08:33 | ||
Сообщение было отмечено Uswer как решение
РешениеЕсли действовать исходя из знаний третьеклассника, могу предложить алгоритм действий, хоть и не уверен, что третьеклассник тоже сможет его найти. (3, 5, 7, 11) (19, 29, 47, 61) (13, 27, 39, 57) 1. Это задача явно на целочисленную арифметику, поэтому глядя на числа первых двух массивов мы можем сразу исключить вычитание и деление для первой операции, поскольку числа первого массива меньше чисел второго, стало быть вычитание будет давать отрицательные результаты, а деление - дробные. 2. Учитывая, что первая операция увеличивает оба операнда, а произведение любого числа из второго массива на любое число из третьего явно больше сотни (даже без первой операции), мы можем уверенно сказать, что вторая операция точно не может быть умножением. 3. Делением вторая операция тоже быть не может, в силу того, что если первая операция сложение, то мы точно получим число меньше ста(достаточно сложить наибольшие числа из первых двух массивов), а если первой операцией будет умножение, то мы получим нечетное число, в силу того, что в первых двух массивах числа нечетные и их произведение тоже будет нечетным, а все числа кратные сотне - четные, таким образом из числа не кратного сотне делением сотню не получить. 4. Если первой операцией будет сложение, то мы уже выяснили, что сложение наибольших чисел первых двух массивов будет меньше ста, а вторая операция может быть быть только сложение или вычитание, таким образом чтобы из числа меньше ста получить сто мы можем использовать только сложение, но этот вариант тоже отпадает в силу того, что в третьем массиве (как и в первых двух) все числа нечетные, а сумма трех нечетных чисел - тоже число нечетное и сотня никак не получится. Из этого следует, что первая операция может быть только умножением. 5. На данный момент у нас получилось, что первая операция у нас точно умножение, а вторая либо сложение либо вычитание. В принципе уже можно было бы и перебирать, но есть еще кое что. Если мы условно представим числа из первого массива как a, из второго b, а из третьего c, то у нас получится два варианта, либо a * b + c = 100, либо a * b - c = 100. Отсюда либо a * b = 100 - c, либо a * b = 100 + c. Таким образом первое произведение дает нам восемь чисел: a * b = (113, 127, 139, 157, 43, 61, 73, 87). Поскольку это произведение это произведение чисел из двух первых массивов, то нам нужно просто проверить какие числа из этого списка делятся на числа первого массива и отобрать те, что при делении дают число, присутствующее во втором. Каждая такая находка будет давать нужную комбинацию. В первом массиве числа 3 5 11 имеют признаки делимости, для семерки придется посчитать, но это тоже можно в уме вычислить. Насколько я могу судить здесь критериям удовлетворяет только число 87 оно делится на 3 и дает 29, которое есть во втором массиве и из этого у нас получается комбинация 3 * 29 + 13 = 100 (13 из-за того, что 87 получено путем вычитания 13 из 100). Остальные числа по-моему вообще простые, но можно проверить. Если писать программу, то только для этих восьми чисел, а так можно в уме решить.
0
|
||
|
fly
4951 / 4635 / 844
Регистрация: 13.04.2015
Сообщений: 9,820
|
||
| Вчера, 18:24 | ||
1
|
||
|
|
|
| Вчера, 18:47 | |
|
I can, плюсую. Кроме того, они могут быть разной длины относительно друг друга..
Добавлено через 6 минут Аналитический подход - это конечно хорошо, но в данном случае он неуместен. Задача простая как дважды два. Тут только тупо перебором.
1
|
|
|
|
|||
| Вчера, 21:07 | |||
2
|
|||
|
|
|
| Вчера, 21:34 | |
|
diadiavova, ну, здесь мы, прежде всего, исходим не из самой задачи (того, что нарисовано в учебнике), а из вопроса автора - как такую задачу решить кодом. Были предложены "универсальные" решения, которые решат подобного рода задачи за приемлемое время, причем с различными числами в лабиринте.
А вот сама задача в учебнике реально вызывает вопросы... Далеко не все 3-классники "смышленые". Это сколько у некоторых уйдет времени, чтобы на листке перебрать возможные комбинации? На что рассчитана задача и что она развивает? А если таких решений в "лабиринте" будет несколько? Современные школьные учебники частенько зашкаливают тупизной на самом деле..
2
|
|
|
8 / 8 / 0
Регистрация: 16.12.2025
Сообщений: 85
|
|||
| Сегодня, 02:47 | |||
|
0
|
|||
|
fly
4951 / 4635 / 844
Регистрация: 13.04.2015
Сообщений: 9,820
|
|||
| Сегодня, 08:03 | |||
0
|
|||
|
|
||||||||||
| Сегодня, 08:25 | ||||||||||
|
0
|
||||||||||
| Сегодня, 08:25 | |
|
Помогаю со студенческими работами здесь
18
Есть ли специальные библиотеки для решения задач высшей математики Создать класс для реализации методов решения квадратного уравнения (Нужен максимально короткий код) Статический класс и делегаты Метод для клика по кнопке и ошибка "требуется класс, делегат или структура" Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|