# 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 ![](https://i.imgur.com/4k3pKhz.jpg) 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 ![](https://i.imgur.com/4jVNg8i.jpg) ### 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 ![](https://i.imgur.com/GGz3Vcn.jpg) ### 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: ![](https://i.imgur.com/3ntn7Zu.jpg) 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: ![](https://i.imgur.com/aQ0V1R1.jpg) 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