Дана последовательность натуральных чисел. Назовём парой любые два числа из последовательности. Необходимо определить количество пар, в которых сумма чисел в паре делится без остатка на 3, а их произведение — на 1024.
Первая строка входного файла содержит целое число N — общее количество чисел в наборе. Каждая из следующих N строк содержит одно число, не превышающее 40 000. Гарантируется, что число в ответе не превышает 2 · 1010.
Вам даны два входных файла (A и B), каждый из которых имеет описанную выше структуру. В ответе укажите два числа: сначала искомое значение для файла A, затем — для файла B.
Ответ:
Решение. Приведём решение на языке Python.
f = open("27-A.txt")
n=int(f.readline())
numbers=[int(x) for x in f]
i=0
k=0
while i!=n:
for h in range(i+1,n):
if (numbers[i]+numbers[h])%3==0 and (numbers[i]*numbers[h])%1024==0:
k=k+1
i=i+1
print(k)
Ответ: 529 и 2 005 090 253.
Примечание.
Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.
Приведём решение Фефелова Сергея на языке Python.
f = open("27.txt")
n=int(f.readline())
a = [[0]*11 for i in range(3)]
for i in range(n):
x=int(f.readline())
j=x%3
k=0
while x%2 == 0:
k += 1
x //= 2
if k == 10: break
a[j][k] += 1
k=sum(a[0][i]*(a[0][i]-1)//2 for i in range(5,11))
k+=sum(a[0][i]*a[0][j] for i in range(11) for j in range(max(i+1,10-i),11))
k+=sum(a[1][i]*a[2][j] for i in range(11) for j in range(10-i,11))
print(k)
Приведём решение Юрия Красильникова на языке Python.