Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 01.12.2015
Сообщений: 120
1

Выведите количество пар клиентов с противоположными t

30.12.2015, 11:55. Просмотров 968. Ответов 2
Метки нет (Все метки)

Помогите решить:
Всем известно, что противоположности притягиваются. Брачное агентство «Паросочетание» работает по этому признаку. Каждого зарегистрированного клиента сотрудники «Паросочетания» классифицировали по его интересам, i-ому клиенту было назначено число ti ( - 10 ≤ ti ≤ 10). Конечно, одно и то же число может быть назначено более чем одному клиенту.
В качестве рекламы «Паросочетание» хочет опубликовать количество пар противоположных клиентов, то есть таких, у которых значение параметра t противоположно. Клиент может входить в пару произвольное количество раз. Помогите агентству и напишите программу, которая по заданной последовательности t1, t2, ..., tn найдет искомое количество. Например, если t = (1,  - 1, 1,  - 1), то любые два элемента ti и tj образуют пару, если i и j имеют разную четность. Следовательно, в этом случае искомое количество равно 4.
Конечно, клиент не может образовывать пару с самим собой.

Входные данные
В первой строке входных данных содержится целое число n (1 ≤ n ≤ 105) — количество зарегистрированных клиентов «Паросочетания». Вторая строка содержит последовательность целых чисел t1, t2, ..., tn ( - 10 ≤ ti ≤ 10), ti — параметр i-го клиента, присвоенный по результатам анализа его интересов.

Выходные данные
Выведите количество пар клиентов с противоположными t. Числом, противоположным для x является число  - x (0 противоположен сам себе). Пары, отличающиеся только порядком клиентов, считаются одинаковыми.

Учтите, что ответ на задачу может быть довольно большим, поэтому необходимо использовать 64-битный целый тип для вычислений.
Примеры тестов
входные данные
5
-3 3 0 0 3
выходные данные
3
входные данные
3
0 0 0
выходные данные
3
Примечание
В первом примере пары противоположных клиентов: (1,2), (1,5) и (3,4).

Во втором примере любая пара клиентов — противоположна.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.12.2015, 11:55
Ответы с готовыми решениями:

Отобразить на карте количество клиентов по списку город-количество клиентов
У меня есть список количества клиентов компании, разбитый по городам. Например: Москва: 100,...

Подсчитать количество пар символов «bc» и «ac» и определить, какая из пар встречается чаще
необходимо вести строку символов. Подсчитать количество пар символов «bc» и «ac» и определить,...

Выведите нумерованный список пар из элементов списков a и b
Создайте список a, состоящий из каких-то элементов. Создайте список b такого же размера, как...

Выведите план обменов для возвращения разумов героев в свои телав виде пар различных чисел
Входные данные Во входном файле записаны целые числа N (4N20) и M(1M100) - количество героев...

2
7 / 7 / 13
Регистрация: 01.04.2015
Сообщений: 34
17.03.2016, 17:08 2
Лучший ответ Сообщение было отмечено Derzky как решение

Решение

поскольку ограничения сверхмаленькие обычного перебора хватит:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
var i,j,n,k:longint;
a:array[1..200] of longint;
begin
read(n);
for i:=1 to n do
        read(a[i]);
for i:=1 to n-1 do
        for j:=i+1 to n do
                if -a[i]=a[j] then
                        inc(k);
write(k);
end.
0
Эксперт Pascal/Delphi
2352 / 1273 / 1481
Регистрация: 29.08.2014
Сообщений: 4,588
17.03.2016, 20:05 3
https://www.cyberforum.ru/cgi-bin/latex.cgi?1\leq n\leq 10^5 - не такие уж и маленькие ограничения

Добавлено через 1 час 56 минут
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var
  n,i:integer;
  t:array[-10..10] of int64;
  s:int64;
begin
  readln(n);
  for n:=1 to n do begin
    read(i);
    Inc(t[i]);
  end;
  for n:=1 to 10 do    s:=s+t[n]*t[-n];
    if t[0]>0 then s:=s+t[0]*(t[0]-1) div 2;
  writeln(s);
end.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.03.2016, 20:05

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

В массиве найти количество пар элементов, произведение которых имеет количество сотен, равное 3
В данном одномерном массиве найдите количество пар различных элементов, произведение которых имеет...

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

Выведите на экран прямоугольник из нулей. Количество строк вводит пользователь, количество столбцов равно 5
Выведите на экран прямоугольник из нулей. Количество строк вводит пользователь, количество столбцов...

Роутер и количество подключаемых клиентов
В настройках роутера пишет, что имеется 2 DHCP клиента, в тех же настройках поставлено ограничение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.