• ПРОВЕРЬТЕ РЕШЕНИЕ

    Дан набор из 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
    все
    все
    кон

    Укажите ошибки в программе, если такие есть. Спасибо

Ответы 1

  • Ошибок нету вроде как я понимаю)
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years