# Pembahasan Seleksi 2 OSN tingkat Sekolah SMAN 4 Denpasar
### Soal dan pembahasan ditulis oleh Nayaka Alkaesyah (VNTSLegacy), Agung Wikrama (AgW23), dan Team FCC Gen 40 (YaNtarAkuNyusul😋)
---
## Soal Logika
## 1
Perhatikan deskripsi berikut ini
Afgan, Adnan, Farid, Reihan, dan Dino sedang duduk melingkar. Masing-masing dari mereka memakai baju dengan warna yang berbeda-beda. Diketahui bahwa warna baju- baju itu adalah merah, biru, ungu, kuning, dan hijau.
Kemudian diketahui fakta-fakta sebagai berikut:
• Afgan duduk di sebelah pemakai baju hijau.
• Farid memakai baju warna ungu
• Afgan tidak memakai baju kuning
• Pemakai baju ungu dan biru duduk bersebelahan.
• Farid dan Dino tidak duduk bersebelahan.
• Pemakai baju ungu duduk diantara pemakai baju kuning dan Adnan.
Siapakah yang menggunakan baju berwarna merah?
a. Afgan
b. Adnan
c. Farid
d. Reinan
e. Dino
(Lainnya...)
### Tags
### Pembahasan

Maka, jawaban dari soal ini adalah Afgan
### Jawaban: a. Afgan
---
## 2
Bebek bebek baru Pak Dengklek yang bernama Anto, Budi, Candra, Doni, Eko, Ferdi, Geri, Hendra, Igor, dan Joko belum saling mengesnal satu sama lain. Definisi saling mengenal adalah bebek A mengenal bebek B jika dan hanya jika bebel B mengenal bebek A juga.
Berikut adalah daftar bebek bebek yang telah dikenal oleh masing-masing bebek.
Anto: Eko, Doni, dan Ferdi
Budi: Anto, Hendra, Joko, Eko, dan Ferdi
Candra: Ferdi, Hendra, dan Joko
Doni: Anto, Candra, dan Budi
Eko: Joko, Igor, Hendra, Budi, dan Anto
Ferdi: Hendra, Igor, Geri, Anto, dan Budi
Geri: Anto, Budi, Ferdi dan Joko
Hendra: Anto, Eko, Ferdi, Igor, Joko, dan Budi
Igor: Geri, Hendra, Joko, Eko, dan Ferdi
Joko: Igor, Hendra, Anto, Geri, Eko, dan Budi
Suatu hari Pak Dengklek ingin bertamasya bersama bebek-bebeknya menggunakan beberapa mobil Setiap mobil hanya boleh diisi oleh bebek bebek yang sudah saling mengenal saja berapakah mobil minimum yang harus disiapkan Pak Dengklek?
a. 1
b. 3
c. 4
d. 5
e. 8
(Lainnya...)
### Tags
### Pembahasan
Untuk memudahkan mencari konfigurasi, urutkan dulu bebek yang telah saling mengenal:
Anto: Doni, Eko, Ferdi
Budi: Eko, Ferdi, Hendra, Joko
Candra: -
Doni: Anto
Eko: Budi, Hendra, Igor, Joko
Ferdi: Anto, Budi, Geri, Hendra, Igor
Geri: Ferdi, Joko
Hendra: Budi, Eko, Ferdi, Igor, Joko
Igor: Eko, Ferdi, Hendra, Joko
Joko: Budi, Eko, Geri, Hendra, Igor
Dari daftar diatas, maka salah satu konfigurasi minimal yang mungkin adalah:
Mobil 1: Anto, Doni
Mobil 2: Candra
Mobil 3: Budi, Ferdi, Hendra, Joko
Mobil 4: Eko, Igor
Mobil 5: Geri
Maka jawaban dari soal ini adalah $5$.
### Jawaban: d. 5
---
## 3
((A or not C) and (A and D or A and not D) or A and not C or not C) and (not E and (E or not B) or (not B or E and E) and (E or B))
Agar pernyataan diatas bernilai true maka A, B, C, D, E harus
a. A=True, B=True, C=True, D=True, E=False
b. A=True, B=False, C=False, D=False, E=True
c. A=True, B=True, C=False, D=True, E=False
d. A=False, B=True, C=True, D=False, E=False
e. Jawaban a, b, c, dan d salah
(Lainnya...)
### Tags
### Pembahasan
Pembahasan tunggu saat club aja ygy :3
### Jawaban:🤔
---
## 4
Tiga sahabat tinggal dalam satu kelompok, mereka bernama Andi, Budi, dan Coki. Masing-masing memiliki tontonan yang berbeda, group band fav yang berbeda, dan merek hp yang berbeda pula.
- Orang yang menonton anime memiliki hp Nokia
- Budi suka mendengarkan lagu JKT48
- Seorang dari mereka suka mendengarkan lagu AKB48 dan tidak memiliki hp Nokia maupun Samsung
- Orang yang mendengarkan Twice tidak menonton sinetron
- Pemilik hp Samsung tidak suka mendengarkan Twice
- Penonton sinetron adalah Coki
Siapa yang suka mendengarkan AKB48?
a. Andi
b. Budi
c. Coki
d. Dini
e. Ferdy Sambo
(Lainnya...)
### Tags
### Pembahasan

### Jawaban: b. Coki
---
## 5
Tiga sahabat tinggal dalam satu kelompok, mereka bernama Andi, Budi, dan Coki. Masing-masing memiliki tontonan yang berbeda, group band fav yang berbeda, dan merek hp yang berbeda pula.
- Orang yang menonton anime memiliki hp Nokia
- Budi suka mendengarkan lagu JKT48
- Seorang dari mereka suka mendengarkan lagu AKB48 dan tidak memiliki hp Nokia maupun Samsung
- Orang yang mendengarkan Twice tidak menonton sinetron
- Pemilik hp Samsung tidak suka mendengarkan Twice
- Penonton sinetron adalah Coki
Orang yang menonton drakor, menyukai group band apa?
a. JKT48
b. AKB48
c. Blackpink
d. Twice
e. Kufaku Band
(Lainnya...)
### Tags
### Pembahasan

### Jawaban: a. JKT48
---
## Soal Aritmatika
## 1
Ada berapa bilangan bulat antara 1 sampai dengan 2023 yang tidak habis dibagi 2 dan tidak habis dibagi 5?
a. 608
b. 810
c. 1413
d. 1415
e. 1821
(Lainnya...)
### Tags
- Teori Bilangan
- Matematika
### Pembahasan
Misalkan:
$A$ = Bilangan bulat antara 1 sampai 2023 (inklusif) yang habis dibagi 2
$B$ = Bilangan bulat antara 1 sampai 2023 (inklusif) yang habis dibagi 5
$A ∩ B$ = Bilangan bulat antara 1 sampai 2023 (inklusif) yang habis dibagi 2 dan 5, atau bisa dibilang habis dibagi 10
Karena yang dicari bilangan yang tidak memenuhi A dan B, maka:
$2023 - |A| - |B| + |A ∩ B|$
$|A| = floor(\frac{2023}{2}) = 1011$
$|B| = floor(\frac{2023}{5}) = 404$
$|A ∩ B| = floor(\frac{2023}{10}) = 202$
$2023 - |A| - |B| + |A ∩ B|$
$= 2023 - 1011 - 404 + 202$
$= 810$
Maka, jawaban dari soal ini adalah $810$
### Jawaban: b. 810
---
## 2
Andi dan Budi sedang bermain Tic Tac Toe, yaitu permainan yang dilakukan di sebuah petak. Andi menuliskan huruf X dan Budi menuliskan huruf O secara bergantian dimulai dari Andi. Pemain yang berhasil membuat 3 huruf dalam 1 garis lurus memenangkan permainan (garis mendatar, vertikal dan diagonal diperbolehkan). Sebagai contoh, jika petak berukuran 3 x 3 dan berakhir seperti pada gambar di bawah ini:

Maka Andi telah memenangkan permainan, karena pada salah satu diagonal terdapat garis lurus berisi 3 buah huruf X. Permainan dikatakan seimbang apabila petak sudah penuh terisi, sementara kedua pemain belum ada yang menjadi pemenang. Apabila ukuran petak adalah 30 x 31 dan diketahui permainan berakhir seimbang, berapa banyak kemungkinan susunan posisi akhir dari petak tersebut (rotasi dan refleksi petak dihitung berbeda)?
a. $6$
b. $8$
c. $2^{29} + 2^{30}$
d. $2^{30} + 2^{31}$
e. $2^{31} + 2^{32}$
(Lainnya...)
### Tags
- Kombinatorika
- Brute Force
- Konstruktif
### Pembahasan
Source: https://www.instagram.com/p/Cb9yrUlri50/?hl=id
(Kunjungi linknya ya 🥵)
### Jawaban: a. 6
---
## 3
Jika diketahui A, B, C dan D adalah bilangan bulat dan memenuhi:
AB + C + D = 3
BC + A + D = 5
CD + A + B = 2
DA + B + C = 6
Berapakah nilai A yang dimaksud?
a. 0
b. 1
c. 2
d. 3
e. 4
(Lainnya...)
### Tags
### Pembahasan
Untuk menjawab soal ini, gunakan teknik eliminasi substitusi:
$AB + C + D = 3...(i)$
$BC + A + D = 5...(ii)$
$CD + A + B = 2...(iii)$
$DA + B + C = 6...(iv)$
Step 1 : $(i) - (ii)$
$C - A + AB - BC = -2$
$A - C - AB + BC = 2$
$(1 - B)(A - C) = 2$
$A - C = \frac{2}{1 - B}...(v)$
Step 2 : $(iii) - (iv)$
$A - C + CD - DA = -4$
$(1 - D)(A - C) = -4$
$A - C = \frac{-4}{1 - D}…(vi)$
Step 3 : $(v) = (vi)$
$\frac{2}{1 - B} = \frac{-4}{1 - D}$
$2 - 2D = -4 + 4B$
$3B + D = 3…(vii)$
Step 4 : $(i) - (iv)$
$D - B + AB - AD = -3$
$B - D - AB + AD = 3$
$(1 - A)(B - D) = 3$
$B - D = \frac{3}{1 - A}$...(viii)
Step 5 : $(ii) - (iii)$
$D - B + CB - CD = 3$
$B - D - CB + CD = -3$
$(1 - C)(B - D) = -3$
$B - D = \frac{-3}{1 - C}...(ix)$
Step 6 : $(viii) = (ix)$
$\frac{3}{1 - A} = \frac{-3}{1 - C}$
$3 - 3C = -3 + 3A$
$A + C = 2…(x)$
Step 7 : $(i) + (ii) + (iii) + (iv)$
$(AB + C + D) + (BC + A + D) + (CD + A + B) + (DA + B + C) = 3 + 5 + 2 + 6$
$A + B + B + C + C + D + D + A + AB + BC + CD + DA = 16$
$2(A + B + C + D) + (A + C)(B + D) = 16$
Substitusikan persamaan $(x): A + C = 2$
$2(2 + B + D) + 2(B + D) = 16$
$4 + 4B + 4D = 16$
$B + D = 3…(xi)$
Step 8 : Gunakan Eliminasi/Substitusi pada persamaan $(vii)$ dan $(xi)$
Step 8.1: $(vii) - (xi)$
$(3B + D) - (B + D) = 3 - 3$
$3B - B + D - D = 0$
$2B = 0$
$B = 0$
Step 8.2: Substitusikan $B = 0 → (xi)$
$B + D = 3$
$0 + D = 3$
$D = 3$
Step 9 : Substitusikan nilai $B$ dan $D → (ii)$
$0 + A + 3 = 5$
$A = 2$
Maka, jawaban dari soal ini adalah $2$
### Jawaban: c. 2
---
## 4
Berapakah hasil dari $(\frac{2^{6910} * 3^{6912}} {6^{5000}}) mod 10$ ?
a. 0
b. 2
c. 4
d. 6
e. 8
(Lainnya...)
### Tags
- Teori Bilangan
- Matematika
### Pembahasan
$(\frac{2^{6910} * 3^{6912}} {6^{5000}}) mod 10$
$= (\frac{2^{6910} * 3^{6910}} {6^{5000}} * 3^2) mod 10$ ---> pangkat dari angka 2 dan 3 disamakan terlebih dahulu
$= (\frac{6^{6910}} {6^{5000}} * 9) mod 10$ ---> dari sifat perkalian: $(a^b * c^b) = (a * c)^b$, jadinya: $6^{6910}$
$= (6^{1910} * 9) mod 10$
$= (6^{1910} mod 10 * 9 mod 10) mod 10$ ---> sifat dari modulo: $(a * b) mod x = (a mod x * b mod x) mod x$
$= (6 * 9) mod 10$
$= 54 mod 10$
$= 4$
Maka, jawaban dari soal ini adalah $4$
### Jawaban: c. 4
---
## 5
Operasi "SWAPBIT" adalah operasi untuk menukar 2 buah bit yang bersebelahan dalam suatu bilangan biner. Misalkan 0110 dapat diubah dengan 1 SWAPBIT menjadi 1010 atau 0101. Berapa banyak operasi SWAPBIT paling sedikit yang diperlukan agar membuat bilangan biner 100101010 menjadi bernilai minimum?
a. 5
b. 7
c. 8
d. 10
e. 11
(Lainnya...)
### Tags
### Pembahasan
Agar bernilai minimum, kita harus pindahkan semua digit 0 ke depan (awal)
$100101010$ ---> 0 penukaran
$100101001$ ---> 1 penukaran
$100100011$ ---> 2 penukaran
$100000111$ ---> 3 penukaran
$000001111$ ---> 5 penukaran
Tambahkan semua total penukaran:
$1 + 2 + 3 + 5 = 11$
Maka, jawaban dari soal ini adalah $11$
### Jawaban: e. 11
---
## Soal Algoritmatika
## 1
Perhatikan code C++ berikut:
int A, B, C;
int main ( ) {
cin >> A >> B >> C;
A = B;
B = C;
C = A;
cout << A + B + C << endl;
return 0;
}
Jika input yang dimasukkan adalah 3, 4, 5 output yang dihasilkan adalah
### Tags
### Pembahasan
Dari soal, didapatkan nilai dari setiap variabel adalah:
$A = 3$
$B = 4$
$C = 5$
Lalu nilai setiap variabel akan diubah:
$A = B → A = 4$
$B = C → B = 5$
$C = A → C = 4$
Tambahkan semua variabel:
$A + B + C = 4 + 5 + 4 = 13$
Maka, jawaban dari soal ini adalah $13$
### Jawaban: 13
---
## 2
Perhatikan pseudocode berikut:
function f(x: integer) : integer;
begin
if(x = 0) then f := 0
else f := 1 - f(x - 1);
end;
Ada berapa banyak nilai f(i) (1 <= i <= 2023) yang bernilai true?
### Tags
- Rekursi
### Pembahasan
Pseudocode dari soal diatas adalah fungsi rekursi. Fungsi rekursi adalah fungsi yang memanggilan dirinya sendiri. Fungsi tersebut didefinisikan sebagai: Jika $x=0$ maka fungsi bernilai $0$. Selain dari itu, fungsi akan bernilai $1-f(x-1)$.
Cari nilai fungsi dari f(1) hingga f(5)
f(1) = 1 - f(1 - 1) = 1 - f(0) = 1 - 0 = 1 (true)
f(2) = 1 - f(2 - 1) = 1 - f(1) = 1 - 1 = 0 (false)
f(3) = 1 - f(3 - 1) = 1 - f(2) = 1 - 0 = 1 (true)
f(4) = 1 - f(4 - 1) = 1 - f(3) = 1 - 1 = 0 (false)
f(5) = 1 - f(5 - 1) = 1 - f(4) = 1 - 0 = 1 (true)
Dari nilai fungsi - fungsi diatas dapat dilihat bahwa apabila $x$ bernilai ganjil, maka fungsi bernilai 1 (true). Apabila $x$ bernilai genap, maka fungsi bernilai 0 (false).
Maka untuk mencari fungsi yang bernilai true:
$floor(\frac{2023}{2}) = 1011$
Karena 2023 juga bilangan ganjil, maka:
$1011 + 1 = 1012$
Maka, jawaban dari soal ini adalah $1012$
### Jawaban: 1012
---
## 3
Perhatikan code C++ berikut:
int main(){
int manuk = 1945;
if (manuk % 100 > 20){
manuk = manuk + 69;
} else {
manuk = manuk + 911;
}
cout << manuk + manuk << endl;
return 0;
}
Apakah keluaran dari program diatas?
### Tags
### Pembahasan
Code diatas dapat didefinisikan:
- Variabel $manuk$ bernilai $1945$.
- Jika nilai $manuk$ mod $100$ lebih dari $20$, nilai $manuk$ ditambahkan $69$
- Selain dari itu, nilai $manuk$ ditambahkan $911$
- Keluarkan nilai $manuk + manuk$
Carilah nilai $manuk$:
$manuk = 1945$
$1945 mod 100 = 45$
Karena $45 > 20$, maka:
$manuk = 1945 + 69 = 2014$
Keluarkan nilai $manuk + manuk$:
$2014 + 2014 = 4028$
Maka, jawaban dari soal ini adalah $4028$
### Jawaban: 4028
---
## 4
Perhatikan subprogram C++ berikut:
int ops(int a, int b) {
if (a > 69420 || b > 69420) {
return a+b;
} else if (a > b) {
return ops(a-b , b+a);
} else {
return ops(a+b , b-a);
}
Berapakah hasil dari pemanggilan fungsi ops(69 , 420)?
### Tags
### Pembahasan
Code dari subprogram soal diatas adalah fungsi rekursi. Fungsi rekursi adalah fungsi yang memanggilan dirinya sendiri. Code tersebut dapat didefinisikan:
- Jika $a > 69420$ atau $b > 69420$, maka fungsi akan bernilai $a + b$
- Selain dari itu jika $a > b$, maka fungsi akan bernilai $ops(a-b , b+a)$
- Selain dari itu, fungsi akan bernilai $ops(a+b, b-a)$
Masukkan fungsi ops(69, 420):
1. ops(69, 420) = ops(69 + 420, 420 - 69) = ops(489, 351)
2. ops(489, 351) = ops(489 - 351, 351 + 489) = ops(138, 840)
3. ops(138, 840) = ops(138 + 840, 840 - 138) = ops(978, 702)
4. ops(978, 702) = ops(978 - 702, 702 + 978) = ops(276, 1680)
5. ops(276, 1680) = ops(276 + 1680, 1680 - 276) = ops(1956, 1404)
6. ops(1956, 1404) = ops(1956 - 1404, 1404 + 1956) = ops(552, 3360)
Dari iterasi - iterasi diatas, dapat dilihat pada iterasi ganjil yakni $1 - 3 - 5$, nilai dari variabel $a$ dan $b$ dikali $2$, begitu juga pada iterasi genap yakni $2 - 4 - 6$, nilai dari variabel $a$ dan $b$ dikali $2$. Sehingga dapat kita lanjutkan hingga salah satu variabel dalam fungsi ops lebih dari 69420:
7. ops(1956, 1404) = ops(3912, 2808)
9. ops(3912, 2808) = ops(7824, 5616)
11. ops(7824, 5616) = ops(15648, 11232)
13. ops(15648, 11232) = ops(31296, 22464)
15. ops(31296, 22464) = ops(62592, 44928)
17. ops(62592, 44928) = ops(125184, 89856) → variabel a melebihi 69420
8. ops(552, 3360) = ops(1104, 6720)
10. ops(1104, 6720) = ops(2208, 13440)
12. ops(2208, 13440) = ops(4416, 26880)
14. ops(4416, 26880) = ops(8832, 53760)
16. ops(8832, 53760) = ops(17664, 107520) → variabel b melebihi 69420
Karena pada iterasi ke-16 variabel $b$ sudah melebihi $69420$, maka jumlahkan variabel $a$ dan $b$:
$a + b = 17664 + 107520 = 125184$
Maka, jawaban dari soal ini adalah $125184$
### Jawaban: 125184
---
## 5
Pak Dengklek memiliki dua buah array A dan B yang masing-masing berisi lima buah bilangan yang sudah terurut secara menaik. Pak Dengklek ingin menggabungkan kedua array tersebut dalam sebuah array C, di mana kesepuluh bilangan dalam array C hasil penggabungan juga harus terurut secara menaik. Sebagai contoh jika array A={2, 4, 5} dan array B={1, 3, 7} maka hasil penggabungan array C={1, 2, 3, 4, 5, 7}. Untuk mengimplementasikan masalah tersebut Pak Dengklek kemudian membuat sebuah program sebagai berikut:

Setelah dicompile, ternyata program tersebut tidak menghasilkan array C={1, 2, 3, 4, 5, 6, 7, 11, 16, 18} sesuai dengan keinginan Pak Dengklek karena sepertinya adalah kesalahan dalam program pada salah satu barisnya. Baris nomor berapakah dalam program yang menyebabkan kesalahan output tersebut?
### Tags:
### Pembahasan
Pembahasan tunggu saat club aja ygy :3
### Jawaban: 🤔
---
### Credits:
#### > AgW23
#### > VNTSLegacy
#### > YaNtarAkuNyusul