Update README.md
This commit is contained in:
parent
096135cf0c
commit
522f0c79cc
85
README.md
85
README.md
@ -1,2 +1,87 @@
|
||||
# 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
|
||||
```
|
||||
|
Loading…
x
Reference in New Issue
Block a user