Retour aux défis
Facile 0 résolus 0 % de réussite

Compter les poignées de main

Comptez le nombre de poignées de main lorsque chaque paire de personnes se serre la main une fois.

Ce que vous allez apprendre

  • Compter les paires avec n × (n - 1) / 2
  • Raisonner pour compter chaque paire une seule fois
  • Remplacer une boucle par une formule

Problème

Chaque personne serre la main une fois avec chaque autre personne. Une poignée de main entre A et B est le même événement qu'entre B et A. Personne ne se serre la main à soi-même.

Implémentez handshake_count(people).

Entrée

people : Le nombre de personnes.

Sortie

Retournez le nombre total de poignées de main distinctes.

Contraintes

0 ≤ people ≤ 1 000 000 000. La réponse tient dans un entier signé 64 bits.

Exemples

Exemple 1
Entrée :
people = 4

Sortie attendue :
expected = 6
Entrée :
long long people = 4;

Sortie attendue :
long long expected = 6;
Entrée :
long people = 4;

Sortie attendue :
long expected = 6;

Explication

Les paires sont AB, AC, AD, BC, BD et CD : six poignées de main.

Exemple 2
Entrée :
people = 1

Sortie attendue :
expected = 0
Entrée :
long long people = 1;

Sortie attendue :
long long expected = 0;
Entrée :
long people = 1;

Sortie attendue :
long expected = 0;

Explication

Une seule personne n'a personne à saluer.

Comment l'aborder

Essayez d'abord seul, puis ouvrez les indices un par un.

Indice 1

Chaque poignée de main est simplement une paire non ordonnée de personnes distinctes.

Indice 2

Compte combien de paires peuvent être formées avec toutes les personnes, sans double comptage.

Indice 3

Attention : zéro ou une seule personne signifie aucune poignée de main.

Complexité attendue

temps O(1), espace supplémentaire O(1)

Références

Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.