Đề bài
Mỗi người sẽ bắt tay một lần với tất cả những người còn lại. Một cái bắt tay giữa A và B được tính là cùng một sự kiện với bắt tay giữa B và A. Không ai tự bắt tay chính mình.
Cài đặt hàm handshake_count(people).
Đầu vào
people: Số lượng người tham gia.
Đầu ra
Trả về tổng số cái bắt tay phân biệt.
Ràng buộc
0 ≤ people ≤ 1.000.000.000. Đáp án nằm trong phạm vi của số nguyên có dấu 64-bit.
Ví dụ
Đầu vào:
people = 4
Kết quả mong đợi:
expected = 6
Đầu vào:
long long people = 4;
Kết quả mong đợi:
long long expected = 6;
Đầu vào:
long people = 4;
Kết quả mong đợi:
long expected = 6;
Giải thích
Các cặp là AB, AC, AD, BC, BD và CD: tổng cộng sáu cái bắt tay.
Đầu vào:
people = 1
Kết quả mong đợi:
expected = 0
Đầu vào:
long long people = 1;
Kết quả mong đợi:
long long expected = 0;
Đầu vào:
long people = 1;
Kết quả mong đợi:
long expected = 0;
Giải thích
Chỉ có một người nên không có ai khác để bắt tay.
Hướng tiếp cận
Hãy tự thử trước, sau đó mở từng gợi ý một.
Gợi ý 1
Mỗi cái bắt tay là một cặp không thứ tự của hai người khác nhau.
Gợi ý 2
Đếm xem từ tất cả mọi người có thể ghép được bao nhiêu cặp, không đếm trùng.
Gợi ý 3
Lưu ý 0 hoặc 1 người thì không có cái bắt tay nào cả.
Độ phức tạp mong đợi
thời gian O(1), bộ nhớ phụ O(1)
Tham khảo
Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.