К списку задач
Легко Решено: 0 Процент решений: 0%

Подсчёт рукопожатий

Посчитайте количество рукопожатий, если каждая пара людей пожимает друг другу руки один раз.

Чему вы научитесь

  • Считать пары по формуле n × (n - 1) / 2
  • Рассуждать, почему каждая пара считается один раз
  • Заменять цикл формулой

Условие

Каждый человек пожимает руку каждому другому человеку ровно один раз. Рукопожатие между A и B считается тем же самым событием, что и рукопожатие между B и A. Никто не жмёт руку сам себе.

Реализуйте функцию handshake_count(people).

Ввод

people: количество людей.

Вывод

Верните общее количество различных рукопожатий.

Ограничения

0 ≤ people ≤ 1 000 000 000. Ответ помещается в знаковое 64-битное целое число.

Примеры

Пример 1
Ввод:
people = 4

Ожидаемый вывод:
expected = 6
Ввод:
long long people = 4;

Ожидаемый вывод:
long long expected = 6;
Ввод:
long people = 4;

Ожидаемый вывод:
long expected = 6;

Пояснение

Пары: AB, AC, AD, BC, BD и CD — всего шесть рукопожатий.

Пример 2
Ввод:
people = 1

Ожидаемый вывод:
expected = 0
Ввод:
long long people = 1;

Ожидаемый вывод:
long long expected = 0;
Ввод:
long people = 1;

Ожидаемый вывод:
long expected = 0;

Пояснение

У одного человека нет никого, с кем можно поздороваться.

Как подступиться

Сначала попробуйте сами, затем открывайте подсказки по одной.

Подсказка 1

Каждое рукопожатие — это просто неупорядоченная пара разных людей.

Подсказка 2

Посчитайте, сколько пар можно составить из всех людей, не считая их дважды.

Подсказка 3

Учтите, что при нуле или одном человеке рукопожатий вообще нет.

Ожидаемая сложность

O(1) по времени, O(1) доп. памяти

Ссылки

Это задание адаптировано для CodeUtility. Следуйте условию и ограничениям выше.

Учитесь у других

Решения сообщества

Пока нет опубликованных решений. Решите задание, чтобы поделиться первым.