a = list(map(int, input().split())) # список с твоими числами
cnt = 0 # счетчик чисел
for x in range(len(a)): # запускаем первый цикл, который перебирает весь массив
for y in range(len(a)): # запускаем второй цикл
if x != y and a[x] * a[y] % 6 == 0 and a[x] - a[y] >= 4: # здесь проверка на то, что индексы не сопвпадают не нужна, но думаю так будет понятнее
cnt += 1
print(cnt)
VVМастер (1124)
1 год назад
Банальный перебор это понятно, нужно универсальное решение на большое кол-во записей, в файле около 1 мил. записей. Ваше решение не отработает на таком кол-ве. Моя функция универсальная там доп. фильтр просто нужно наложить на индексы пар.
with open('mod6dif4A.txt') as f:
n = int(f.readline())
lst = [int(x) for x in f]
def count_pairs(lst, n):
cnt2, cnt3, cnt6 = 0, 0, 0
for i in range(len(lst)):
mod2 = (lst[i] % 2 == 0)
mod3 = (lst[i] % 3 == 0)
if mod2 and mod3:
cnt6 += 1
elif mod2:
cnt2 += 1
elif mod3:
cnt3 += 1
return cnt6*(cnt6-1)//2 +cnt6 * (n - cnt6) + cnt2*cnt3
count_pairs(lst, n)
Как добавить в алгоритм условие, что номера элементов пары отличаются друг от друга не
менее чем на 4 ?