Вопрос задан 16.02.2021 в 02:43. Предмет Информатика. Спрашивает Листопадова Елизавета.

ПРОВЕРЬТЕ РЕШЕНИЕ Дан набор из N целых положительных чисел. Из них нужно выбрать и вывести два

числа так, чтобы их сумма была нечётна, а произведение делилось на 3 и при этом было максимально возможным. Выбранные числа можно выводить в любом порядке. Если есть несколько подходящих пар, можно выбрать любую из них. Если подходящих пар нет, нужно вывести 0. Напишите эффективную по времени и по памяти программу для решения этой задачи. Программа считается эффективной по времени, если при увеличении количества исходных чисел N в k раз время работы программы увеличивается не более чем в k раз. Программа считается эффективной по памяти, если память, необходимая для хранения всех переменных программы, не превышает 1 килобайта и не увеличивается с ростом N. Описание входных и выходных данных В первой строке входных данных задаётся количество чисел N (1 ≤ N ≤ 1000). В каждой из последующих N строк записано одно натуральное число, не превышающее 100. Пример входных данных: 5 1 2 3 4 5 Пример выходных данных для приведённого выше примера входных данных: 3 4 Пояснение. Из 5 чисел можно составить 10 пар. В данном случае условиям удовлетворяют две пары: (2, 3) и (3, 4). Суммы чисел в этих парах (5 и 7) нечётны, а произведения (6 и 12) делятся на 3. У всех остальных пар как минимум одно из этих условий не выполняется. Из двух возможных пар выводим ту, в которой больше произведение элементов. Решение Находим максимальные чётные и нечётные числа среди всех и отдельно среди кратных 3, вычисляем подходящие произведения, выбираем из них максимальное. алг Задача нач цел x0, x1, y0, y1 ввод n x0 := 0; x1 := 0 y0 := 0; y1 := 0 нц n раз ввод a если mod(a,3)= 0 и mod(a,2) = 0 и a > x0: то x0 :=a все если mod(a,3)= 0 и mod(a,2) = 1 и a > x1: то x1 :=a все если mod(a,2) = 0 и a > y0: то y0 :=a все если mod(a,2) = 1 и a > y1: то y1 :=a все кц если x0*y1 = 0 и x1*y0 = 0 то вывод 0 иначе если x0*y1 > x1*y0 то вывод x0, ' ', y1 иначе вывод x1, ' ', y0 все все кон Укажите ошибки в программе, если такие есть. Спасибо
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Лобанов Данил.
Ошибок нету вроде как я понимаю)
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

В представленном решении есть несколько ошибок. Вот исправленная версия программы:

less
n = int(input()) # Вводим количество чисел x0 = x1 = y0 = y1 = 0 # Инициализируем переменные for _ in range(n): a = int(input()) # Вводим числа по одному if a % 3 == 0: if a % 2 == 0 and a > x0: x0 = a elif a % 2 == 1 and a > x1: x1 = a else: if a % 2 == 0 and a > y0: y0 = a elif a % 2 == 1 and a > y1: y1 = a if x0 * y1 == 0 and x1 * y0 == 0: print(0) elif x0 * y1 > x1 * y0: print(x0, y1) else: print(x1, y0)

Ошибки в исходном решении:

  • Неверное использование оператора присваивания в условных выражениях. Вместо то x0 :=a все должно быть x0 = a, и аналогично для других условий.
  • Отсутствие двоеточия после слова "алг" в начале программы.
  • Необходимо добавить отступы для блоков кода в цикле и условных выражениях.
  • Вместо ввод a должно быть a = int(input()), чтобы присвоить введенное значение переменной a.
  • Использование неправильного оператора и вместо and в условных выражениях.
  • Вместо кц должно быть кон, чтобы завершить программу.
  • Отсутствует пробел между значениями при выводе пар чисел.

С учетом указанных исправлений программа должна работать правильно и соответствовать условиям задачи.

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос