2025-05-10 00:20:13 +07:00
2025-05-10 00:18:29 +07:00

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

  1. 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 dari n orang untuk salaman.

  2. Kurangi Salam Antar Pasangan Jika ada p pasangan, maka ada p pasang orang yang tidak boleh saling bersalaman. Setiap pasangan akan mengurangi 1 salaman, sehingga perlu mengurangi p dari hasil langkah 1.

  3. 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