Задача к ЕГЭ по информатике на тему «Макс/мин, кол-во пар, произведение кратно/не кратно» №1

На вход программы поступает последовательность из целых положительных чисел. Рассматриваются все пары различных элементов последовательности. Необходимо определить количество пар, для которых произведение элементов делится на 29.

Входные данные Даны два входных файла: A и B, каждый из которых содержит в первой строке количество чисел N (5 < N < 100000). Каждая из следующих N строк содержит одно натуральное число, не превышающее 10000.

Пример входных данных:

7

29

2

5

6

4

1

58

Для указанных входных данных программа должна вывести число 11.

В ответе укажите два числа через пробел: сначала количество соответствующих условию пар для файла A затем для файла B.

Предупреждение: для обработки файла В не следует использовать переборный алгоритм, определяющий количество всех возможных пар, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.

Статическое решение

f = open(’27B.txt’) #для ответа на A нужно подключить файл 27A.txt
n = int(f.readline())
k29 = 0
nk = 0
for i in range(n):
    x = int(f.readline())
    if x % 29 == 0:
        k29 += 1
    else:
        nk += 1
print(k29*(k29-1)//2 + k29*nk)

Динамическое решение

f = open(’27B.txt’) #для ответа на A нужно подключить файл 27A.txt
n = int(f.readline())
counter = 0
k29 = 0
nk = 0
for i in range(n):
    y = int(f.readline())
    if y % 29 == 0:
        counter += (k29 + nk)
        k29 += 1
    else:
        counter += k29
        nk += 1
print(counter)

Ответ: 90 1163531
Оцените статью
Я решу все!