Torna alle sfide
Facile 0 risolte 0% di accettazione

Conta le strette di mano

Conta le strette di mano quando ogni coppia di persone si stringe la mano una volta.

Cosa imparerai

  • Contare le coppie con n × (n - 1) / 2
  • Ragionare per contare ogni coppia una sola volta
  • Sostituire un ciclo con una formula

Problema

Ogni persona si stringe la mano una volta con ogni altra persona. Una stretta di mano tra A e B è lo stesso evento che tra B e A. Nessuno si stringe la mano da solo.

Implementa handshake_count(people).

Input

people: Il numero di persone.

Output

Restituisci il numero totale di strette di mano distinte.

Vincoli

0 ≤ people ≤ 1.000.000.000. La risposta rientra in un intero con segno a 64 bit.

Esempi

Esempio 1
Input:
people = 4

Output atteso:
expected = 6
Input:
long long people = 4;

Output atteso:
long long expected = 6;
Input:
long people = 4;

Output atteso:
long expected = 6;

Spiegazione

Le coppie sono AB, AC, AD, BC, BD e CD: sei strette di mano.

Esempio 2
Input:
people = 1

Output atteso:
expected = 0
Input:
long long people = 1;

Output atteso:
long long expected = 0;
Input:
long people = 1;

Output atteso:
long expected = 0;

Spiegazione

Una persona non ha nessun altro da salutare.

Come affrontarlo

Prova prima da solo, poi apri un suggerimento alla volta.

Suggerimento 1

Ogni stretta di mano è solo una coppia non ordinata di persone diverse.

Suggerimento 2

Conta quante coppie si possono formare tra tutte le persone, senza doppio conteggio.

Suggerimento 3

Attenzione: con zero o una persona non ci sono strette di mano.

Complessità attesa

tempo O(1), spazio aggiuntivo O(1)

Riferimenti

Questa sfida è adattata per CodeUtility. Segui la traccia e i vincoli sopra.

Impara dagli altri

Soluzioni della community

Nessuna soluzione pubblicata. Risolvi questa sfida per condividere la prima.