---
# System prepended metadata

title: Pembahasan Seleksi 2 OSN tingkat Sekolah SMAN 4 Denpasar

---

# 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