Посчитайте количество пар элементов равных друг другу в массиве. Любые два элемента равные друг другу образуют пару. На вход программы подаётся n – длина массива, а затем сам массив длиной n. Выведите количество таких пар. Учтите, что если элемент массива уже состоит в одной паре это не мешает ему попасть в другую. Sample Input: 5 5 5 5 5 5 Sample Output: 10
gfhjkmgfhjkm20:
Точно 5 должно быть 6 в Sample Input: 5 5 5 5 5 5?
Ерунда или в условии, или в примере. Пусть в массиве шесть равных элементов а1, а2, а3, а4, а5, а6. Тогда возможные пары а1а2, а1а3, а1а4, а1а5, а1а6, а2а3, а2а4, а2а5, а2а6, а3а4, а3а5, а3а6, а4а5, а4а6, а5а6. Как бы 15, а не 10.
Вот если пятерок 5, там получится 10. Это обычное количество сочетаний из n по 2, равное n! / (2! (n-2)!)
Ответы
Ответ дал:
0
===== PascalABC.NET =====
begin
var n := ReadInteger;
var a := ReadArrInteger(n);
a.GroupBy(p -> p)
.Select(p -> p.Count)
.Where(p -> p > 1)
.Select(p -> p * (p -1) div 2)
.Sum
.Println;
end.
Приложения:
Вас заинтересует
1 год назад
3 года назад
3 года назад
8 лет назад