|
|
||||||
Задача по математике, 3 класс, пять вложенных циклов, делегаты. Есть ли короткое решение?17.03.2026, 11:27. Показов 5604. Ответов 61
Метки нет (Все метки)
Здравствуйте. Есть задача из 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 | |
|
Ответы с готовыми решениями:
61
Отличие делегата от делегата с лямбда-выражением Разница лямбда выражения, делегата (\анонимного делегата), методом (\анонимных методов) |
|
dive
4969 / 4664 / 847
Регистрация: 13.04.2015
Сообщений: 9,862
|
||||||
| 17.03.2026, 12:50 | ||||||
Сообщение было отмечено sysrepos как решение
Решение
Без делегатов
3
|
||||||
|
15 / 14 / 1
Регистрация: 04.03.2014
Сообщений: 34
|
|||||||||||
| 17.03.2026, 14:41 | |||||||||||
|
I can, у вас dt.Compute(s, "") использует стандартные правила вычисления,
сначала умножение и деление, а потом сложение и вычитание. В результате:
sysrepos, моё решение:
2
|
|||||||||||
|
2744 / 1670 / 269
Регистрация: 19.02.2010
Сообщений: 4,426
|
||
| 17.03.2026, 15:12 | ||
|
Такая задача генерации значений, точнее, последовательного инкремента от 00000 до 33333, решается одним циклом. Пяти не нужно. Точнее, будет "обрамляющий" цикл, который берёт очередное число и проводит в соответствии с ним матем.вычисления, и будет один цикл в функции инкремента (для прохода по разрядам числа начиная с самого младшего). В таком виде решение задачи легко обобщается на бОльшее/произвольное число кругов в лабиринте - надо всего-то будет поменять в проге константу, задающую число разрядов для числа, кодирующего путь, ну и добавить нужное число массивов с числами-операндами. PS. Да - это перебираемое кодовое число (от 00000 до 33333, или с иным числом разрядов, и/или в иной системе счисления) надо реализовывать не в виде единого монолитного целого числа - а в виде массива значений разрядов, чтобы код оказался попроще.
2
|
||
|
15 / 14 / 1
Регистрация: 04.03.2014
Сообщений: 34
|
||
| 17.03.2026, 15:18 | ||
|
VTsaregorodtsev
0
|
||
|
2744 / 1670 / 269
Регистрация: 19.02.2010
Сообщений: 4,426
|
|
| 17.03.2026, 15:31 | |
|
zhigarartem, Лови, но на другом языке.
Функция по типу product() в Python
0
|
|
|
dive
4969 / 4664 / 847
Регистрация: 13.04.2015
Сообщений: 9,862
|
|||||||
| 17.03.2026, 15:39 | |||||||
2
|
|||||||
|
15 / 14 / 1
Регистрация: 04.03.2014
Сообщений: 34
|
|
| 17.03.2026, 16:02 | |
|
VTsaregorodtsev, можете решить задачу автора темы своим способом и показать код?
1
|
|
|
|
|||||||||||
| 17.03.2026, 18:09 | |||||||||||
|
class Resolver
2
|
|||||||||||
|
|
||
| 18.03.2026, 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
|
||
|
dive
4969 / 4664 / 847
Регистрация: 13.04.2015
Сообщений: 9,862
|
||
| 18.03.2026, 18:24 | ||
1
|
||
|
|
|
| 18.03.2026, 18:47 | |
|
I can, плюсую. Кроме того, они могут быть разной длины относительно друг друга..
Добавлено через 6 минут Аналитический подход - это конечно хорошо, но в данном случае он неуместен. Задача простая как дважды два. Тут только тупо перебором.
1
|
|
|
|
|||
| 18.03.2026, 21:07 | |||
2
|
|||
|
|
|
| 18.03.2026, 21:34 | |
|
diadiavova, ну, здесь мы, прежде всего, исходим не из самой задачи (того, что нарисовано в учебнике), а из вопроса автора - как такую задачу решить кодом. Были предложены "универсальные" решения, которые решат подобного рода задачи за приемлемое время, причем с различными числами в лабиринте.
А вот сама задача в учебнике реально вызывает вопросы... Далеко не все 3-классники "смышленые". Это сколько у некоторых уйдет времени, чтобы на листке перебрать возможные комбинации? На что рассчитана задача и что она развивает? А если таких решений в "лабиринте" будет несколько? Современные школьные учебники частенько зашкаливают тупизной на самом деле..
2
|
|
|
-40 / 34 / 5
Регистрация: 16.12.2025
Сообщений: 207
|
|||
| 19.03.2026, 02:47 | |||
|
0
|
|||
|
dive
4969 / 4664 / 847
Регистрация: 13.04.2015
Сообщений: 9,862
|
|||
| 19.03.2026, 08:03 | |||
0
|
|||
|
|
||||||||||
| 19.03.2026, 08:25 | ||||||||||
|
0
|
||||||||||
|
|
|
| 19.03.2026, 12:09 | |
|
diadiavova, не пойму - от кого защищаетесь?
Никто не говорил что ваши размышления плохие/неверные. Я даже прямо сказал "аналитика - это хорошо". Но речь ведь идет про решение этой задачи кодом, и быстрейший способ это сделать - просто перебрать все массивы.
1
|
|
|
|
||
| 19.03.2026, 12:41 | ||
|
0
|
||
| 19.03.2026, 12:41 | |
|
Помогаю со студенческими работами здесь
20
Есть ли специальные библиотеки для решения задач высшей математики Создать класс для реализации методов решения квадратного уравнения (Нужен максимально короткий код) Статический класс и делегаты Метод для клика по кнопке и ошибка "требуется класс, делегат или структура" Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
|
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|