Volver a los desafíos
Fácil 0 resueltos 0% de aceptación

Contar apretones de manos

Cuenta los apretones de manos cuando cada par de personas se saluda una vez.

Lo que aprenderás

  • Contar pares con n × (n - 1) / 2
  • Razonar para contar cada par una sola vez
  • Sustituir un bucle por una fórmula

Problema

Ver original (inglés)

Cada persona se da la mano una vez con cada otra persona. Un apretón de manos entre A y B es el mismo evento que uno entre B y A. Nadie se da la mano consigo mismo.

Implementa handshake_count(people).

Entrada

people: El número de personas.

Salida

Devuelve el número total de apretones de manos distintos.

Restricciones

0 ≤ people ≤ 1,000,000,000. La respuesta cabe en un entero con signo de 64 bits.

Ejemplos

Ejemplo 1
Entrada:
people = 4

Salida esperada:
expected = 6
Entrada:
long long people = 4;

Salida esperada:
long long expected = 6;
Entrada:
long people = 4;

Salida esperada:
long expected = 6;

Explicación

Los pares son AB, AC, AD, BC, BD y CD: seis apretones de manos.

Ejemplo 2
Entrada:
people = 1

Salida esperada:
expected = 0
Entrada:
long long people = 1;

Salida esperada:
long long expected = 0;
Entrada:
long people = 1;

Salida esperada:
long expected = 0;

Explicación

Una persona no tiene a nadie más a quien saludar.

Cómo abordarlo

Inténtalo primero por tu cuenta y luego abre las pistas una a una.

Pista 1

Cada apretón de manos es solo un par no ordenado de personas distintas.

Pista 2

Cuenta cuántos pares se pueden formar con todas las personas sin duplicarlos.

Pista 3

Ten en cuenta que con cero o una persona no hay apretones de manos.

Complejidad esperada

tiempo O(1), espacio extra O(1)

Referencias

Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.

Aprende de otros

Soluciones de la comunidad

Aún no hay soluciones publicadas. Resuelve este reto para compartir la primera.