Если есть возможность, то на питоне.
Посчитайте количество пар элементов равных друг другу в массиве. Любые два элемента равные друг другу образуют пару.

Требования: На вход программы подаётся n – длина массива, а затем сам массив длиной n. Выведите количество таких пар. Учтите, что если элемент массива уже состоит в одной паре это не мешает ему попасть в другую.

Например:

Входные данные:

5

5 5 5 5 5

Ответы

Ответ дал: KnowsUser1
1

Ответ:

Решение топорное, что называется "в лоб". По памяти не эффективно ни разу. По времени тоже, даже для питона. Но работает)

--- Python 3.8.3 ---

counter = 0

n=int(input())

Seq = [int(i) for i in input().split(' ', maxsplit=n)]

for i in range(len(Seq)-1):

   for k in range(i+1, len(Seq)):

       if Seq[i] == Seq[k]: counter+=1

print(counter)


BobbyFresnel: (после этой фразы сторонники Питона наперебой кричат: "А Питон не для этого!")
KnowsUser1: Ну для питона перебрать лист в 100к элементов это на пол часа, как минимум) Хотя стоит отметить, что я повторял тест из статьи, которую вы кидали, про сравнение скорости питона, паскаля и плюсов, (правда я змею с си-диезом сравнивал) так C# тоже от таких новостей присел минут на 5
BobbyFresnel: Да ну понятно, что интерпретатор много дольше компилятора работает. Достаточно сделать огромный цикл, внутри которого выполняется что-то сложное, не реализуемое прямым обращением к библиотечной функции - и все, можно спокойно идти поспать.
BobbyFresnel: Кстати, о Питоне. В научный и инженерный мир пришло запоздалое протрезвление. Из-за того, что в Питоне для отрицательных чисел остаток от деления вычисляется не так, как в других языках, результаты обращения из Питона к сторонним библиотекам временами дают непредсказуемые результаты.
KnowsUser1: Ну это у него есть такое. Все математические и инженерные библиотеки для него на С написаны. Причём полностью. Интерпретатору уже готовый ответ приходит, что бы он там не сломал ничего. У Чистого Питона вообще явно какая то неприязнь к отрицательным числам
BobbyFresnel: Еще есть вариант с асимптотикой O = n*log(n), если отсортировать данные хорошей сортировкой. Тогда одинаковые элементы окажутся рядом, что даст некий аналог словаря.
BobbyFresnel: К слову, помните нашу дискуссию о том является ли List списком? Вот что пишет английская вики: "Lists are typically implemented either as linked lists (either singly or doubly linked) or as arrays, usually variable length or dynamic arrays.". Здесь List - это именно то, что мы переводим на русский как "список", а не узкое название коллекции".
BobbyFresnel: Фактически, это означает, что сейчас понятике списка, которое давали Хоар, Дейкстра или Кнут стало шире. Теперь и массив - список, но список - по-прежнему не массив.
BobbyFresnel: Кстати, специально для Вас: разработчики PascalABС.NET (Южный федеральный университет) ныне трактуют коллекцию List, как "расширяемый динамический массив" и, похоже, планируют дать ей некоторый приоритет перед динамическими массивами. Например, та же библиотека School будет возвращать List.
BobbyFresnel: Как мне объяснили, внутренняя реализация частенько использует List и лишнее преобразование результата в array лишь замедляет работу.
Похожие вопросы