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

Программа и описание алгоритмаВысокаяКЭС 3.2КЭС 3.3
На вход программы поступает последовательность из N целых положительных чисел, все числа в последовательности различны. Рассматриваются все пары различных элементов последовательности: элементы пары не обязаны стоять в последовательности рядом, порядок элементов в паре не важен. Необходимо определить количество пар, для которых произведение элементов делится на 26.
В первой строке входных данных задаётся количество чисел N (1≤N≤1000). В каждой из последующих N строк записано одно целое положительное число, не превышающее 10 000.
В качестве результата программа должна напечатать одно число: количество пар, в которых произведение элементов кратно 26.
Пример входных данных:
4
2
6
13
39
Пример выходных данных для приведённого выше примера входных данных:
4
Из четырёх заданных чисел можно составить 6 попарных произведений: 2⋅6, 2⋅13, 2⋅39, 6⋅13, 6⋅39, 13⋅39. Из них на 26 делятся 4 произведения: 2⋅13=26, 2⋅39=78, 6⋅13=78, 6⋅39=234.
Требуется написать эффективную по времени и по памяти программу для решения описанной задачи. Программа считается эффективной по времени, если при увеличении количества исходных чисел N в k раз время работы программы увеличивается не более чем в k раз. Программа считается эффективной по памяти, если память, необходимая для хранения всех переменных программы, не превышает 1 килобайта и не увеличивается с ростом N.
Перед текстом программы кратко опишите алгоритм решения. Укажите использованный язык программирования и его версию.

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

Подсказки (3)
  1. Разложите 26 на взаимно простые множители 2 и 13. Какие свойства двух чисел обеспечивают делимость их произведения на 26?
  2. Разделите числа на четыре группы: кратные 26, кратные 2 и не кратные 13, кратные 13 и не кратные 2, а также не кратные ни 2, ни 13. Поддерживайте количества групп при последовательном чтении чисел.
  3. Каждое новое число, кратное 26, образует пару со всеми ранее прочитанными числами. Число, кратное только 2, образует подходящие пары с ранее прочитанными числами, кратными только 13, и наоборот.
Решение
1. Так как 26=2⋅13, произведение двух чисел делится на 26, если в произведении присутствуют множители 2 и 13.
26=2⋅13

2. Число, кратное 26, образует подходящую пару с любым другим числом. Поэтому при чтении такого числа к ответу добавляется количество всех уже прочитанных чисел.

3. Число, кратное 2, но не кратное 13, образует подходящую пару с числами, кратными 13, но не кратными 2. Аналогично, число, кратное только 13, образует пары с ранее прочитанными числами, кратными только 2.

4. Храним только четыре счётчика: количество ранее прочитанных чисел, количество чисел, кратных только 2, количество чисел, кратных только 13, и общее количество прочитанных чисел. Алгоритм выполняется за O(N) времени и использует O(1) памяти.

5. Программа на Python 3. При чтении очередного числа сначала учитываются пары с уже обработанными числами, затем обновляются счётчики.

6. Код программы:
n = int(input()) answer = 0 total = 0 only_2 = 0 only_13 = 0 for _ in range(n):
x = int(input()) if x % 26 == 0:
answer += total elif x % 2 == 0:
answer += only_13 elif x % 13 == 0:
answer += only_2 total += 1 if x % 2 == 0 and x % 13 != 0:
only_2 += 1 elif x % 13 == 0 and x % 2 != 0:
only_13 += 1 print(answer)
Частые ошибки
  • Перебирать все пары, получая сложность $O(N^2)$.
  • Относить числа, кратные $26$, одновременно к группам «только кратные $2$» или «только кратные $13$».
  • Не учитывать, что число, кратное $26$, образует подходящую пару с любым другим числом.
  • Хранить всю последовательность, нарушая требование постоянного объёма памяти.

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

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

27На вход программе подаются сведения о сдаче экзаменов учениками 9-х классов некоторой средней школы. В первой…Программа и описание алгоритма · 6FF64727Дана последовательность N целых положительных чисел. Рассматриваются все пары элементов последовательности…Программа и описание алгоритма · 7BD73827Рассматриваются все пары различных элементов последовательности: элементы пары не обязаны стоять рядом…Программа и описание алгоритма · 8180D727Дана последовательность N целых положительных чисел. Рассматриваются все пары элементов последовательности…Программа и описание алгоритма · 8F133027Рассматриваются все пары различных элементов последовательности: порядок элементов в паре не важен.…Программа и описание алгоритма · BCE6F127На вход программе подаются строчные английские буквы. Ввод этих символов заканчивается точкой (другие…Программа и описание алгоритма · C0417927Рассматриваются все пары различных элементов последовательности: элементы пары не обязаны стоять рядом…Программа и описание алгоритма · E3E82427На вход программе подаются сведения о пассажирах, сдавших свой багаж в камеру хранения. В первой строке…Программа и описание алгоритма · E9F6D6

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

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

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

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

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

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

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