Бесплатный урок с нашим репетитором!

Узнать подробнее

Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Посмотреть все вопросы нейросети
Бесплатный пробный урок с репетитором

Узнай больше про репетиторов Новой Школы и запишись на бесплатный пробный урок. Мы проверим твой уровень знаний и составим план обучения по любому предмету и классу

Вопрос от Анонимного юзера 27 декабря 2025 06:10

Задача 4. Тематика: Основные свойства алгоритма Уровень программы: 9/10 Условие: Фермер Джок все лето выращивал урожай на продажу. Однако вывезти абсолютно все овощи на рынок не получится. Он рассчитал, что может унести не более М овощей, при условии что выращено N овощей. При этом стоимость выращенных овощей также отличается, есть дешевые, а есть и дорогие экземпляры. Фермер хочет взять с собой такие овощи, чтобы общая выручка от продажи была максимальная. Формат входных данных. Первый параметр содержит величину N (2 < N < 1000), второй параметр содержит величину М (0 ≤ М ≤ N). Третьим параметром передайте строку, которая содержит N стоимостей каждого овоща. Пример: N =10 M=7 Стоимости - «4,2,16,8,9,22,18,19,10,30» Формат выходных данных. Выведите единственное число - максимальную суммарную стоимость, которую Джэ может выручить от продажи. реши в 1c

Ответ нейросети

27 декабря 2025 06:10

Коротко про решение:

  • Нужно выбрать не более M овощей с максимальной суммой цен.
  • Элементарный способ: отсортировать все N цен по убыванию и суммировать первые M элементов. Если M = 0, сумма 0.
  • Временная сложность: O(N²) при простой сортировке выбора (N ≤ 1000, это непроблема).

Ниже приведён пример решения на 1C:Enterprise (язык 1C). Код делится на три части: разбор входной строки цен в массив чисел, сортировка по убыванию и суммирование первых M элементов.

Пример кода (1C)

Процедура РешениеЗадачи() // Ввод: N, M и строка с ценами, например N = 10; M = 7; СтоимостиСтрока = "4,2,16,8,9,22,18,19,10,30";

Результат = МаксимальнаяВыручка(N, M, СтоимостиСтрока);
Сообщить(Результат); // Ожидаемо: 124

КонецПроцедуры

Функция МаксимальнаяВыручка(N, M, СтрокаЦен) // Разобрать строку цен в массив чисел Стоим = РазобратьСтрокуЧисел(СтрокаЦен);

// Корректируем M на случай, если он больше количества цен
Если M > ТЧислоСтрок(Стоим) Тогда
    M = ТЧислоСтрок(Стоим);
КонецЕсли;

// Сортировка по убыванию (селектор-сортировка)
Для i = 0 По ТЧислоСтрок(Стоим) - 1 Цикл
    ИндексМакс = i;
    Для j = i + 1 По ТЧислоСтрок(Стоим) - 1 Цикл
        Если Стоим[j] > Стоим[ИндексМакс] Тогда
            ИндексМакс = j;
        КонецЕсли;
    КонецЦикл;
    // обмен элементов
    Если ИндексМакс <> i Тогда
        Временная = Стоим[i];
        Стоим[i] = Стоим[ИндексМакс];
        Стоим[ИндексМакс] = Временная;
    КонецЕсли;
КонецЦикл;

// Сумма первых M элементов
Сумма = 0;
Для k = 0 По M - 1 Цикл
    Сумма = Сумма + Стоим[k];
КонецЦикл;

Возврат Сумма;

КонецФункции

Функция РазобратьСтрокуЧисел(Строка) // Нормализация разделителей: заменяем запятые и возможные точки с запятыми на пробелы Строка = СтрЗаменить(Строка, ",", " "); Строка = СтрЗаменить(Строка, ";", " ");

Результат = Новый Массив();
ТекСтр = "";
ДлинаСтроки = СтрДлина(Строка);
Для i = 1 По ДлинаСтроки Цикл
    Символ = СтрСред(Строка, i, 1);
    Если СтрЦелое(НайтиЦифру(Символ)) Тогда
        // если символ является цифрой
        ТекСтр = ТекСтр + Символ;
    Иначе
        Если СтрДлина(ТекСтр) > 0 Тогда
            Добавить(Число(ТекСтр), Результат);
            ТекСтр = "";
        КонецЕсли;
    КонецЕсли;
КонецЦикл;
Если СтрДлина(ТекСтр) > 0 Тогда
    Добавить(Число(ТекСтр), Результат);
КонецЕсли;

Возврат Результат;

КонецФункции

Замечания по синтаксису:

  • В 1С:Предприятие синтаксис может зависеть от версии и конфигурации. В примере используются стандартные операции: массивы, цикл «Для ... Цикл», функции СтрЗаменить, СтрСред, СтрДлина, Число, Добавить, Новый Массив и т.д.
  • Разбор строки реализован так, чтобы работать с числами, разделёнными запятыми или точками с запятой и пробелами.
  • Если входные данные будут приходить в виде массива чисел, можно заменить функцию РазобратьСтрокуЧисел на прямое присваивание этого массива — это упрощает код.

Пример работы:

  • Вход: N=10, M=7, СтоимостиСтрока = "4,2,16,8,9,22,18,19,10,30"
  • Обработка: восемьонный массив → сортировка по убыванию → сумма первых 7 элементов → 124
  • Вывод: 124

Если хотите, могу адаптировать код под конкретную версию 1С:Предприятие (например 8.3) и под ваш формат входных данных (например, ввод через форму, файл, или параметры функции).

Задай свой вопрос

Напиши любую задачу или вопрос, а нейросеть её решит

Похожие вопросы 15

Бесплатно Мобильное приложение ГДЗ
Мобильное приложение ГДЗ

Задавай вопросы искуcственному интеллекту текстом или фотографиями в приложении на iPhone или Android

qr-codegoogle-playapp-store

Саша — ассистент в телеграмме

Задача 4. Тематика: Основные свойства алгоритма Уровень программы: 9/10 Условие: Фермер Джок все лето выращивал урожай на продажу. Однако вывезти абсолютно все овощи на рынок не получится. Он рассчитал, что может унести не более М овощей, при условии что выращено N овощей. При этом стоимость выращенных овощей также отличается, есть дешевые, а есть и дорогие экземпляры. Фермер хочет взять с собой такие овощи, чтобы общая выручка от продажи была максимальная. Формат входных данных. Первый параметр содержит величину N (2 < N < 1000), второй параметр содержит величину М (0 ≤ М ≤ N). Третьим параметром передайте строку, которая содержит N стоимостей каждого овоща. Пример: N =10 M=7 Стоимости - «4,2,16,8,9,22,18,19,10,30» Формат выходных данных. Выведите единственное число - максимальную суммарную стоимость, которую Джэ может выручить от продажи. реши в 1c
Коротко про решение: - Нужно выбрать не более M овощей с максимальной суммой цен. - Элементарный способ: отсортировать все N цен по убыванию и суммировать первые M элементов. Если M = 0, сумма 0. - Временная сложность: O(N²) при простой сортировке выбора (N ≤ 1000, это непроблема). Ниже приведён пример решения на 1C:Enterprise (язык 1C). Код делится на три части: разбор входной строки цен в массив чисел, сортировка по убыванию и суммирование первых M элементов. Пример кода (1C) Процедура РешениеЗадачи() // Ввод: N, M и строка с ценами, например N = 10; M = 7; СтоимостиСтрока = "4,2,16,8,9,22,18,19,10,30"; Результат = МаксимальнаяВыручка(N, M, СтоимостиСтрока); Сообщить(Результат); // Ожидаемо: 124 КонецПроцедуры Функция МаксимальнаяВыручка(N, M, СтрокаЦен) // Разобрать строку цен в массив чисел Стоим = РазобратьСтрокуЧисел(СтрокаЦен); // Корректируем M на случай, если он больше количества цен Если M > ТЧислоСтрок(Стоим) Тогда M = ТЧислоСтрок(Стоим); КонецЕсли; // Сортировка по убыванию (селектор-сортировка) Для i = 0 По ТЧислоСтрок(Стоим) - 1 Цикл ИндексМакс = i; Для j = i + 1 По ТЧислоСтрок(Стоим) - 1 Цикл Если Стоим[j] > Стоим[ИндексМакс] Тогда ИндексМакс = j; КонецЕсли; КонецЦикл; // обмен элементов Если ИндексМакс <> i Тогда Временная = Стоим[i]; Стоим[i] = Стоим[ИндексМакс]; Стоим[ИндексМакс] = Временная; КонецЕсли; КонецЦикл; // Сумма первых M элементов Сумма = 0; Для k = 0 По M - 1 Цикл Сумма = Сумма + Стоим[k]; КонецЦикл; Возврат Сумма; КонецФункции Функция РазобратьСтрокуЧисел(Строка) // Нормализация разделителей: заменяем запятые и возможные точки с запятыми на пробелы Строка = СтрЗаменить(Строка, ",", " "); Строка = СтрЗаменить(Строка, ";", " "); Результат = Новый Массив(); ТекСтр = ""; ДлинаСтроки = СтрДлина(Строка); Для i = 1 По ДлинаСтроки Цикл Символ = СтрСред(Строка, i, 1); Если СтрЦелое(НайтиЦифру(Символ)) Тогда // если символ является цифрой ТекСтр = ТекСтр + Символ; Иначе Если СтрДлина(ТекСтр) > 0 Тогда Добавить(Число(ТекСтр), Результат); ТекСтр = ""; КонецЕсли; КонецЕсли; КонецЦикл; Если СтрДлина(ТекСтр) > 0 Тогда Добавить(Число(ТекСтр), Результат); КонецЕсли; Возврат Результат; КонецФункции Замечания по синтаксису: - В 1С:Предприятие синтаксис может зависеть от версии и конфигурации. В примере используются стандартные операции: массивы, цикл «Для ... Цикл», функции СтрЗаменить, СтрСред, СтрДлина, Число, Добавить, Новый Массив и т.д. - Разбор строки реализован так, чтобы работать с числами, разделёнными запятыми или точками с запятой и пробелами. - Если входные данные будут приходить в виде массива чисел, можно заменить функцию РазобратьСтрокуЧисел на прямое присваивание этого массива — это упрощает код. Пример работы: - Вход: N=10, M=7, СтоимостиСтрока = "4,2,16,8,9,22,18,19,10,30" - Обработка: восемьонный массив → сортировка по убыванию → сумма первых 7 элементов → 124 - Вывод: 124 Если хотите, могу адаптировать код под конкретную версию 1С:Предприятие (например 8.3) и под ваш формат входных данных (например, ввод через форму, файл, или параметры функции).