Задание 27 ЕГЭ по информатике · 29FE86

Программа и описание алгоритмаВысокаяКЭС 3.2КЭС 3.3
На вход программы поступает последовательность из N целых положительных чисел, все числа в последовательности различны. Рассматриваются все пары различных элементов последовательности, находящихся на расстоянии не меньше чем 3: разница в индексах элементов пары должна быть 3 или более, порядок элементов в паре неважен. Необходимо определить количество таких пар, для которых произведение элементов делится на 23.
В первой строке входных данных задаётся количество чисел N (3≤N≤1000). В каждой из последующих N строк записано одно целое положительное число, не превышающее 10 000. Программа должна вывести одно число — количество подходящих пар.
Требуется написать эффективную по времени и памяти программу. Программа считается эффективной по времени, если при увеличении N в k раз время её работы увеличивается не более чем в k раз. Программа считается эффективной по памяти, если память для хранения всех переменных не превышает 1 килобайта и не увеличивается с ростом N.
Перед текстом программы кратко опишите алгоритм решения, укажите использованный язык программирования и его версию.

Развёрнутый ответ: проверяется по критериям ФИПИ.

Подсказки (3)
  1. Произведение делится на 23, если хотя бы один из двух множителей делится на 23.
  2. При обработке очередного числа учитывайте только числа, отстоящие от него минимум на три позиции. Храните количество подходящих ранее считанных чисел.
  3. Достаточно хранить последние два числа и счётчик чисел, кратных 23, среди элементов, которые уже можно образовывать в пары с текущим. Если текущее число кратно 23, оно образует пару со всеми допустимыми предыдущими элементами; иначе — только с допустимыми предыдущими числами, кратными 23.
Решение
1. Для пары элементов произведение кратно 23 тогда и только тогда, когда хотя бы один элемент пары кратен 23.

2. При чтении элемента с индексом i допустимыми предыдущими являются элементы с индексами не больше i−3. Поэтому перед обработкой текущего элемента в счётчик добавляется элемент, прочитанный три позиции назад.

3. Пусть count23 — количество добавленных допустимых предыдущих элементов, кратных 23, а available — общее количество добавленных допустимых элементов. Если текущий элемент кратен 23, он образует подходящую пару с каждым из available элементов. Иначе он образует подходящую пару только с count23 элементами.

4. После обработки текущего элемента его значение сохраняется в очереди из последних трёх элементов, чтобы через три шага добавить его в множество допустимых предыдущих элементов. Используется постоянное количество переменных, поэтому память не зависит от N.

5. Программа работает за O(N) по времени и за O(1) по дополнительной памяти.

6. Один из вариантов реализации на Python 3:
Частые ошибки
  • Учитывать элементы, находящиеся на расстоянии 1 или 2 позиций.
  • Добавлять текущий элемент в счётчик допустимых элементов до подсчёта пар с ним.
  • Считать только пары двух чисел, кратных 23, хотя достаточно кратности 23 одного множителя.
  • Хранить всю последовательность, нарушая требование по памяти.
  • Использовать двойной цикл и получить сложность $O(N^2)$.

Источник: Открытый банк ФИПИ

Похожие задания

27На вход программы поступает последовательность из n целых положительных чисел. Рассматриваются все пары…Программа и описание алгоритма · 195BE627Рассматриваются все пары различных элементов последовательности, находящихся на расстоянии не меньше чем 4…Программа и описание алгоритма · 233FD127Дана последовательность N целых положительных чисел. Рассматриваются все пары элементов последовательности…Программа и описание алгоритма · 26775227Дана последовательность N целых положительных чисел. Рассматриваются все пары элементов последовательности…Программа и описание алгоритма · 2931D927Рассматриваются все пары различных элементов последовательности, находящихся на расстоянии не меньше чем 4…Программа и описание алгоритма · 2C4C0127Дана последовательность N целых положительных чисел. Рассматриваются все пары элементов последовательности…Программа и описание алгоритма · 335BFF27Рассматриваются все пары различных элементов последовательности, находящихся на расстоянии не меньше чем 4…Программа и описание алгоритма · 37B02227На спутнике «Восход» установлен прибор, предназначенный для измерения солнечной активности. В течение времени…Программа и описание алгоритма · 391438

Нужен репетитор по информатике?

Посмотрите репетиторов, которые ведут занятия в Precettore, или оставьте заявку — подберём сами.

Репетиторы по информатике

Подбор репетитора

Напишите, что нужно, — команда Precettore подберёт репетитора и свяжется с вами.

Готовьтесь к ЕГЭ по информатике в Precettore

Варианты с автопроверкой, домашние задания от репетитора, онлайн-доска и разбор ошибок — в одном кабинете. Регистрация бесплатная.