Bersalaman
Strategi Penyelesaian Soal Bersalaman
Deskripsi Masalah
Pada soal ini, diberikan sejumlah orang dalam sebuah pertemuan keluarga. Beberapa orang hadir bersama pasangannya, sementara yang lain datang sendiri. Setiap orang akan saling bersalaman, kecuali dengan pasangannya sendiri. Tugasnya adalah menghitung total jumlah salam yang terjadi dalam pertemuan ini.
Format Input
Setiap baris input berisi dua angka yang dipisahkan oleh satu spasi:
- Angka pertama (
n
): Jumlah total orang yang hadir (minimal 2, maksimal 1000) - Angka kedua (
p
): Jumlah pasangan yang hadir (setiap pasangan terdiri dari 2 orang)
Contoh Input:
4 0
6 2
5 4
Format Output
Output adalah jumlah total salaman yang terjadi untuk setiap baris input.
Contoh Output:
h#1: 6
h#2: 14
h#3: 8
Strategi Penyelesaian
-
Hitung Total Kombinasi Salam Gunakan rumus kombinasi untuk menghitung jumlah total pasangan yang mungkin:
C(n, 2) = \frac{n (n - 1)}{2}
Ini akan menghitung jumlah cara memilih 2 orang darin
orang untuk salaman. -
Kurangi Salam Antar Pasangan Jika ada
p
pasangan, maka adap
pasang orang yang tidak boleh saling bersalaman. Setiap pasangan akan mengurangi 1 salaman, sehingga perlu mengurangip
dari hasil langkah 1. -
Cetak Hasil Format hasil sesuai dengan contoh, menggunakan nomor kasus (h#1, h#2, dst.) untuk setiap baris input.
Pseudocode
function hitungSalaman(n, p):
total_salaman = (n * (n - 1)) // 2
salaman_terlarang = p
hasil = total_salaman - salaman_terlarang
return hasil
// Baca setiap baris input dan proses
for setiap baris dalam input:
n, p = pisahkan angka dalam baris
hasil = hitungSalaman(n, p)
cetak("h#<nomor>: <hasil>")
Kompleksitas Waktu
Algoritma ini memiliki kompleksitas O(1) per kasus, karena operasi kombinasi dan pengurangan pasangan bersifat konstan meskipun jumlah orang (n
) sangat besar.
Uji Coba
Berikut beberapa contoh uji coba:
Input
4 0
6 2
5 4
Output yang Diharapkan
h#1: 6
h#2: 14
h#3: 8