Дана последовательность натуральных чисел. Расстояние между элементами последовательности — это разность их порядковых номеров. Например, если два элемента стоят в последовательности рядом, расстояние между ними равно 1, если два элемента стоят через один — расстояние равно 2 и так далее.
Назовём парой любые два числа из последовательности, расстояние между которыми не меньше 14. Необходимо определить количество пар, в которых сумма чисел в паре делится без остатка на 8, а их произведение — на 19 683.
Первая строка входного файла содержит целое число N — общее количество чисел в наборе. Каждая из следующих N строк содержит одно число, не превышающее 100 000. Гарантируется, что число в ответе не превышает 2 · 109.
Вам даны два входных файла (A и B), каждый из которых имеет описанную выше структуру. В ответе укажите два числа: сначала искомое значение для файла A, затем — для файла B.
Ответ:
Решение. Приведём решение пункта А на языке Python.
N = 1086
count = 0
f = open('27-A.txt')
s = f.readlines()
for i in range(1, len(s)):
for j in range(i, len(s)):
if j - i + 1 >= 14:
if (int(s[i]) + int(s[j])) % 8 == 0 and (int(s[i]) * int(s[j])) % 19683 == 0:
count += 1
print(count)
Ответ: 32 68713559.
Примечание.
Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.
Приведём решение Михаила Тиличеева на языке Python.
def count_3(num):
res = 0
while num > 0 and num % 3 == 0 and res < 9:
res += 1
num //= 3
return res
f = open('27.txt')
n = int(f.readline())
del_3 = [[0] * 10 for i in range(8)] # вложенный список, количество степеней 3 со вложенными индексами равными остатками от деления на 8
numbers_14 = [int(f.readline()) for _ in range(14)]