OSN-K Informatika 2022

SOAL UJIAN SELEKSI CALON PESERTA KOMPETISI SAINS NASIONAL 2022 TINGKAT KABUPATEN/KOTA

INFORMATIKA/KOMPUTER

Bagian A: Analitika & Logika

Bagian B: Algoritmika

Waktu: 150 menit

KEMENTERIAN PENDIDIKAN, KEBUDAYAAN, RISET DAN TEKNOLOGI PUSAT PRESTASI NASIONAL TAHUN 2022


Bagian A : Analitika / Logika


Nomor 1 :

Perhatikan operasi logika berikut!

  • P = ((not A) and B) or (((not C) or D) and E)
  • Q = ((not A) or B) and (((not C) and (not D) ) or (not E))
  • R = P and Q

Jika nilai A = True, B = True, C = True, D = True, dan E = False, tentukan nilai P, Q dan R berturut-turut?

  • A. P=False, Q= True, R= False
  • B. P=False, Q= False, R= False
  • C. P=True, Q= True, R= True
  • D. P=True, Q= False, R= False
  • E. P=False, Q= True, R= True

Jawaban :

Jenis-jenis gerbang logika

Terdapat beberapa jenis logic gate yang umum digunakan. Berikut adalah jenis-jenis gerbang logika dan tabel kebenarannya.

  1. Gerbang AND
    Jenis pertama adalah gerbang AND. Gerbang AND ini memerlukan dua atau lebih input untuk menghasilkan satu output. Jika semua atau salah satu inputnya merupakan bilangan biner 0, maka outputnya akan menjadi 0. Sedangkan jika semua input adalah bilangan biner 1, maka outputnya akan menjadi 1.Logic gate AND
  2. Gerbang OR
    Jenis kedua adalah gerbang OR. Sama seperti gerbang sebelumnya, gerbang ini juga memerlukan dua input untuk menghasilkan satu output. Gerbang OR ini akan menghasilkan output 1 jika semua atau salah satu input merupakan bilangan biner 1. Sedangkan output akan menghasilkan 0 jika semua inputnya adalah bilangan biner 0.Logic gate OR
  3. Gerbang NOT
    Jenis berikutnya adalah gerbang NOT. Gerbang NOT ini berfungsi sebagai pembalik keadaan. Jika input bernilai 1 maka outputnya akan bernilai 0 dan begitu juga sebaliknya.Logic gate NOT

1.    Nilai A, B, C, D, dan E:

  • A = True
  • B = True
  • C = True
  • D = True
  • E = False

2.    Menghitung P:

  • P = ((not A) and B) or (((not C) or D) and E)
  • not A = False (karena A = True)
  • not C = False (karena C = True)
  • (not A) and B = False and True = False
  • (not C) or D = False or True = True
  • ((not C) or D) and E = True and False = False
  • Jadi, P = False or False = False

3.    Menghitung Q:

Q = ((not A) or B) and (((not C) and (not D)) or (not E))

  • not A = False (karena A = True)
  • not C = False (karena C = True)
  • not D = False (karena D = True)
  • not E = True (karena E = False)
  • (not A) or B = False or True = True
  • (not C) and (not D) = False and False = False
  • ((not C) and (not D)) or (not E) = False or True = True

Jadi, Q = True and True = True

4.    Menghitung R:

  • R = P and Q
  • P = False
  • Q = True
  • Jadi, R = False and True = False

Jadi, nilai P, Q, dan R adalah:

  • P = False
  • Q = True
  • R = False

Nomor 2 :

Dalam pemilihan Ketua Asosiasi Bebek, terdapat sekitar 120 bebek yang akan melakukan voting dengan tiga kandidat ketua yaitu Kwak, Kwik, dan Kwek. Dalam pemilihan ini, setiap bebek boleh tidak melakukan voting atau melakukan voting ke lebih dari satu kandidat. Diketahui bahwa ada 65 bebek yang memilih Kwak, 45 bebek memilih Kwik, dan 42 bebek yang memilih Kwek. Kemudian diketahui juga bahwa ada 20 bebek yang memilih Kwak dan Kwik sekaligus, 25 bebek memilih Kwak dan Kwek sekaligus, dan 15 bebek yang memilih Kwik dan Kwek sekaligus. Secara aturan jika bebek memilih hanya satu kandidat maka seluruh suara bulat (nilai 3) akan diberikan kepada kandidat tersebut, jika bebek memilih lebih dari satu kandidat maka suara bulat (nilai 3) akan dibagi rata sebanyak kandidat yang dipilih. Kandidat yang mendapatkan suara terbesar pertama, kedua dan ketiga berturut-turut akan menjadi Ketua, Wakil Ketua dan Sekretaris. Manakah pernyataan berikut yang benar?

  • A. Kwak akan menjadi Wakil Ketua.
  • B. Kwik akan menjadi Sekretaris
  • C. Kwek akan menjadi Sekretaris
  • D. Kwik akan menjadi Ketua.
  • E. Kwek akan menjadi Wakil Ketua.

Jawaban :

Data yang Diketahui

  • Total bebek = 120
  • Bebek yang memilih:
    • Kwak = 65
    • Kwik = 45
    • Kwek = 42
  • Bebek yang memilih lebih dari satu kandidat:
    • Kwak dan Kwik = 20
    • Kwak dan Kwek = 25
    • Kwik dan Kwek = 15

Langkah-langkah Menghitung Suara

  • Bebek yang memilih ketiga kandidat sekaligus:
    • Misalkan x adalah jumlah bebek yang memilih ketiga kandidat (Kwak, Kwik, dan Kwek).
    • Menggunakan prinsip inklusi-eksklusi untuk mencari x:

65+45+42−20−25−15+x=120

117−60+x=120

x=3

  • Menghitung bebek yang hanya memilih satu kandidat:
    • Bebek yang hanya memilih Kwak: 65−20−25+3=23
    • Bebek yang hanya memilih Kwik: 45−20−15+3=13
    • Bebek yang hanya memilih Kwek: 42−25−15+3=5

Menghitung Suara Total untuk Masing-masing Kandidat

  1. Kwak:
    • Bebek yang hanya memilih Kwak: 23 (suara 3 per bebek)
    • Bebek yang memilih Kwak dan Kwik: 20 (suara 1.5 per bebek)
    • Bebek yang memilih Kwak dan Kwek: 25 (suara 1.5 per bebek)
    • Bebek yang memilih ketiga kandidat: 3 (suara 1 per bebek)
    • Total suara untuk Kwak: (23×3)+(20×1.5)+(25×1.5)+(3×1)=69+30+37.5+3=139.5
  1. Kwik:
    • Bebek yang hanya memilih Kwik: 13 (suara 3 per bebek)
    • Bebek yang memilih Kwak dan Kwik: 20 (suara 1.5 per bebek)
    • Bebek yang memilih Kwik dan Kwek: 15 (suara 1.5 per bebek)
    • Bebek yang memilih ketiga kandidat: 3 (suara 1 per bebek)
    • Total suara untuk Kwik: (13×3)+(20×1.5)+(15×1.5)+(3×1)=39+30+22.5+3=94.5
  1. Kwek:
    • Bebek yang hanya memilih Kwek: 5 (suara 3 per bebek)
    • Bebek yang memilih Kwak dan Kwek: 25 (suara 1.5 per bebek)
    • Bebek yang memilih Kwik dan Kwek: 155 (suara 1.5 per bebek)
    • Bebek yang memilih ketiga kandidat: 3 (suara 1 per bebek)
    • Total suara untuk Kwek: (5×3)+(25×1.5)+(15×1.5)+(3×1)=15+37.5+22.5+3=78

Kesimpulan:

  • Kwak: 139.5 suara
  • Kwik: 94.5 suara
  • Kwek: 78 suara

Urutannya adalah:

  1. Kwak menjadi Ketua
  2. Kwik menjadi Wakil Ketua
  3. Kwek menjadi Sekretaris

Jadi, pernyataan yang benar adalah: C. Kwek akan menjadi Sekretaris

Nomor 3 :

Jika 𝑛 adalah bilangan bulat positif yang memenuhi persamaan 7^𝑛4−3𝑛2−4 = 11^𝑛4−3𝑛2−4 berapakah digit terakhir dari nilai 𝑛^2022?

  • A. 2
  • B. 4
  • C. 8
  • D. 0
  • E. 6

Jawaban :

Nomor 4 :

Berapakah nilai digit terakhir dari ?

  • A. 1
  • B. 3
  • C. 5
  • D. 9
  • E. 7

Jawaban :

Nomor 5 :

Diketahui ada enam kota A, B, C, D, E, dan F sebagai berikut:

Dua kota dikatakan terhubung jika ada jalan (divisualisasikan sebagai garis) yang menghubungkan keduanya dengan jarak dalam kilometer. Pak Dengklek ditugasi untuk memasang kabel internet di atas beberapa jalan yang ada sedemikian sehingga setiap kota bisa terhubung baik secara langsung maupun tidak langsung (melalui kota lainnya). Berapa panjang kabel minimal yang harus disiapkan oleh Pak Dengklek?

  • A. 25
  • B. 27
  • C. 29
  • D. 32
  • E. 33

Jawaban :

Nomor 6 :

Diketahui 8 buah kota dengan label 0, 1, 2, …, 7 yang masing-masing terhubung dengan sebuah jalan. Setiap jalan bersifat satu arah.

Diketahui pula waktu tempuh dari satu kota ke kota yang lain melalui masing-masing jalan sesuai dengan nilai yang ditunjukkan pada masing-masing jalur penghubung (dalam satuan jam). Waktu tempuh antara dua buah kota didefinisikan sebagai nilai terkecil dari total waktu tempuh jalan-jalan yang harus dilewati untuk berpindah dari satu kota ke kota lainnya. Misalnya, waktu tempuh dari 2 ke 7 adalah 3, karena kita dapat melalui jalur 2→ 3 (waktu tempuh = 2) dan jalur 3→7 (waktu tempuh = 1), sehingga total = 2 + 1 = 3, dan tidak ada jalur lain dari 2 ke 7 yang memiliki total waktu tempuh < 3. Kota manakah yang waktu tempuhnya dari 0 paling besar?

  • A. 3
  • B. 4
  • C. 5
  • D. 6
  • E. 7

Jawaban :

Nomor 7 :

Pak Dengklek sedang membuat program sederhana yang bisa menggambar sebuah bangun ruang dari masukan sebuah string yang terdiri dari huruf-huruf “T”, “U”, “B”, “S”. Setiap membaca satu karakter pada string, program akan menggambar sebuah garis dengan panjang 1 cm yang terhubung dengan garis sebelumnya yang digambar dengan ketentua sebagai berikut:

  • Jika terbaca karakter T, maka program akan menggambar garis dengan arah dari kiri ke kanan.
  • Jika terbaca karakter U, maka program akan menggambar garis dengan arah dari bawah ke atas.
  • Jika terbaca karakter B, maka program akan menggambar garis dengan arah dari kanan ke kiri.
  • Jika terbaca karakter S, maka program akan menggambar garis dengan arah dari atas ke bawah.

Berikut adalah dua contoh hasil gambar dari program yang dibuat Pak Dengklek dengan masukan sebuah string.

Jika diperhatikan meskipun masukan string berbeda, gambar yang dihasilkan bentuknya sama hanya berbeda pada rotasinya saja. Manakah diantara string berikut yang menghasilkan gambar dengan bentuk yang sama dengan string TTTSBSTTSBBBUBUU.

  • A. TTTSTSBSBBUTUBBU
  • B. BBBUTUBBUTTTTSSS
  • C. TTTSTSSBBBUTUBBU
  • D. TTTSSBUBSBUUTTTS
  • E. SSTSBBBUTUBBUTTT

Jawaban :

Untuk menentukan string yang menghasilkan gambar dengan bentuk yang sama dengan string "TTTSBSTTSBBBUBUU", kita perlu memahami bahwa kita dapat membandingkan pola jalur yang terbentuk dari string input tersebut. Kita akan memvisualisasikan jalur yang terbentuk dan kemudian mencari string yang menghasilkan jalur dengan bentuk yang sama.

Langkah-langkahnya sebagai berikut:

  1. Visualisasikan jalur yang terbentuk dari string input "TTTSBSTTSBBBUBUU".
  2. Visualisasikan jalur yang terbentuk dari setiap string pilihan (A, B, C, D, E).
  3. Bandingkan jalur-jalur tersebut dengan jalur yang terbentuk dari string input.
  4. Cari string yang menghasilkan jalur dengan bentuk yang sama.

Mari kita mulai dengan langkah pertama:

String input "TTTSBSTTSBBBUBUU":

T (ke kanan) - T (ke kanan) - T (ke kanan) - S (ke bawah) - B (ke kiri) - S (ke bawah) - T (ke kanan) - T (ke kanan) - S (ke bawah) - B (ke kiri) - B (ke kiri) - B (ke kiri) - U (ke atas) - B (ke kiri) - U (ke atas) - U (ke atas)

Ini menghasilkan jalur yang membentuk pola tertentu.

Selanjutnya, kita akan melakukan hal yang sama untuk setiap opsi jawaban:

Pilihan A: "TTTSTSBSBBUTUBBU"

T (ke kanan) - T (ke kanan) - T (ke kanan) - S (ke bawah) - T (ke kanan) - S (ke bawah) - B (ke kiri) - S (ke bawah) - B (ke kiri) - B (ke kiri) - U (ke atas) - T (ke kanan) - U (ke atas) - B (ke kiri) - B (ke kiri) - U (ke atas)

Pola yang dihasilkan berbeda.

Pilihan B: "BBBUTUBBUTTTTSSS"

B (ke kiri) - B (ke kiri) - B (ke kiri) - U (ke atas) - T (ke kanan) - U (ke atas) - B (ke kiri) - B (ke kiri) - U (ke atas) - T (ke kanan) - T (ke kanan) - T (ke kanan) - T (ke kanan) - S (ke bawah) - S (ke bawah) - S (ke bawah)

Pola yang dihasilkan berbeda.

Pilihan C: "TTTSTSSBBBUTUBBU"

T (ke kanan) - T (ke kanan) - T (ke kanan) - S (ke bawah) - T (ke kanan) - S (ke bawah) - S (ke bawah) - B (ke kiri) - B (ke kiri) - B (ke kiri) - U (ke atas) - T (ke kanan) - U (ke atas) - B (ke kiri) - B (ke kiri) - U (ke atas)

Pola yang dihasilkan sama dengan string input.

Pilihan D: "TTTSSBUBSBUUTTTS"

T (ke kanan) - T (ke kanan) - T (ke kanan) - S (ke bawah) - S (ke bawah) - B (ke kiri) - U (ke atas) - B (ke kiri) - S (ke bawah) - B (ke kiri) - U (ke atas) - U (ke atas) - T (ke kanan) - T (ke kanan) - T (ke kanan) - S (ke bawah)

Pola yang dihasilkan berbeda.

Pilihan E: "SSTSBBBUTUBBUTTT"

S (ke bawah) - S (ke bawah) - T (ke kanan) - S (ke bawah) - B (ke kiri) - B (ke kiri) - B (ke kiri) - U (ke atas) - T (ke kanan) - U (ke atas) - B (ke kiri) - U (ke atas) - T (ke kanan) - T (ke kanan) - T (ke kanan)

Pola yang dihasilkan berbeda.

Dari analisis di atas, kita menemukan bahwa Pilihan C menghasilkan jalur dengan bentuk yang sama dengan string input.

Jawaban yang benar adalah C. TTTSTSSBBBUTUBBU.

Nomor 8 :

Tahun ini Pak Dengklek ditunjuk menjadi ketua panitia Olimpiade Internasional Bebek (OIB). Untuk memberikan pengalaman kepada bebek-bebeknya, Pak Dengklek berencana memilih 10 dari 15 bebek yang dimilikinya untuk menjadi peserta. Tentunya kita tahu bahwa di antara 15 bebek tersebut, ada empat bebek kesayangan Pak Dengklek, yaitu Kwak, Kwik, Kwek dan Kwok. Kwak dan Kwik harus dipilih untuk menjadi peserta lomba karena keduanya yang paling pintar. Sedangkan Kwek dan Kwok tidak bisa dipilih sebab saat ini sedang sakit. Ada berapa banyak cara memilih bebek-bebek sebagai peserta OIB?

  • A. 303
  • B. 286
  • C. 196
  • D. 165
  • E. 120

Jawaban :

Nomor 9 :

Pak Dengklek akan kembali ke kotanya dari Yogyakarta setelah meninjau lokasi yang akan digunakan untuk Olimpiade Internasional Bebek (OIB). Dia membawa oleh-oleh dari Yogyakarta untuk ketiga bebeknya yaitu Kwak, Kwik, dan Kwek. Tapi sayangnya dia hanya mendapatkan jatah 20 kg bagasi, jika barang bawaannya melebihi dari jatah, Pak Dengklek harus membayar biaya tambahan untuk berat sisanya. Masing-masing oleh-oleh memiliki berat tertentu. Gabungan oleh-oleh untuk Kwak dan Kwik jika ditimbang memiliki berat 13 kg. Gabungan oleh-oleh untuk Kwak dan Kwek jika ditimbang memiliki berat 21 kg. Gabungan oleh-oleh untuk Kwik dan Kwek jika ditimbang memiliki berat 32 kg. Berapakah tambahan berat bagasi yang harus dibayar Pak Dengklek?

  • A. 13
  • B. 33
  • C. 14
  • D. 46
  • E. 66

Jawaban :

Nomor 10 :

Pak Dengklek mengumpulkan sejumlah bebek, satu diantaranya adalah Kwak. Mereka diminta untuk berbaris secara memanjang ke samping. Pak Dengklek ingin mengetes kemampuan bebeknya dengan menyebutkan sebuah angka mulai dari bebek paling kiri sampai bebek paling kanan dengan urutan angka 1, 4, 7, 10, 13, … dan saat giliran Kwak, dia menyebutkan angka 46. Proses ini diulangi mulai dari bebek paling kanan sampai bebek paling kiri dengan urutan angka 1, 6, 11, 16, … dan saat giliran Kwak, dia menyebutkan angka 46 lagi. Berapakah jumlah bebek yang ada dalam barisan?

  • A. 23
  • B. 24
  • C. 25
  • D. 26
  • E. 27

Jawaban :

Nomor 11 :

Jika diketahui bahwa:

(1 +3+5+⋯+𝑎)+(1+3+5+⋯+𝑏)=(1+3+5+⋯+51)

Berapakah nilai a+b?

  • A. 34
  • B. 66
  • C. 57
  • D. 43
  • E. 45

Nomor 12 :

Perhatikan papan berikut!

Kwak dan Kwek sedang bermain di atas papan tersebut. Permainan dilakukan secara bergiliran dimulai dari Kwak. Dalam satu giliran, seekor bebek dapat bergerak ke kiri 1 langkah, atau bergerak ke kanan 1 atau 2 langkah. Tentu saja seekor bebek tidak boleh menempati posisi bebek lain maupun melompatinya. Seekor bebek dikatakan kalah ketika tidak dapat bergerak pada saat gilirannya. Jika kedua bebek bermain secara optimal, siapakah yang akan menang?

  • A. Kwak
  • B. Kwek
  • C. Tidak dapat ditentukan
  • D. Permainan tidak akan selesai
  • E. Semua jawaban di atas salah

Nomor 13 :

Perhatikan bentuk berikut! Apabila dibuat 5 garis lurus, berapa maksimal potongan yang terbentuk?

  • A. 6
  • B. 19
  • C. 20
  • D. 26
  • E. 32

Jawaban :

Nomor 14 :

Di akhir pekan ini Pak Dengklek mendapatkan 5 email dari Koleganya yang harus dia baca satu persatu sesuai dengan aturan berikut:

  • Email Pak Adi akan dibaca paling akhir
  • Email Pak Budi akan dibaca lebih dahulu sebelum email Pak Adi, tetapi bukan email yang pertama kali dibaca.
  • Email Pak Carli dan Pak Dudung dibacakan secara berurutan antara Email Pak Eman dan Pak Budi

Email siapakah yang pertama kali dibaca oleh Pak Dengklek?

  • A. Pak Adi
  • B. Pak Budi
  • C. Pak Carli
  • D. Pak Dudung
  • E. Pak Eman

Jawaban :

Nomor 15 :

Perhatikan meja lingkar berikut! Bilangan pada piring menunjukkan ukuran dari piring tersebut.

Sebagai karyawan restoran, Pak Dengklek akan mengambil seluruh piring tersebut untuk dicuci. Karena alasan keselamatan kerja, Pak Dengklek harus mengambil piring dari yang ukurannya paling besar sehingga piring yang diambil harus urut dari ukuran 6 hingga 1. Setiap berpindah dari satu meja ke meja lain yang bersebelahan membutuhkan satu langkah. Pak Dengklek hanya bisa berpindah antara dua meja yang saling bersebelahan. Berapa banyak langkah minimal Pak Dengklek untuk mengambil seluruh piring tersebut?

  • A. 18
  • B. 19
  • C. 20
  • D. 21
  • E. 22

Jawaban :

Nomor 16 :

Pak Dengklek akan mengadakan pesta untuk memperingati hari kemerdekaan di lingkungan RT/RW-nya. Pesta ini rencananya akan mengundang 100 orang warganya. Dalam rangka menyiapkan jamuan yang sesuai untuk para tamu, pak Dengklek telah mensurvei preferensi setiap warganya terhadap 3 jenis alternatif makanan, yaitu: kue apem, bakso atau cendol. Hasil survei menunjukkan: 20 orang suka makan apem, 30 orang suka makan bakso, dan 45 orang suka cendol, 5 orang suka apem dan bakso, 6 orang suka bakso dan cendol, 1 orang saja yang suka apem dan cendol, dan satu orang juga yang suka ketiga-tiganya. Berapakah orang yang tidak suka ketiga jenis makanan tersebut?

Jawaban: ……………. {tuliskan jawaban dalam bentuk ANGKA saja}

Jawaban :

Nomor 17 :

Berapakah nilai dari 20222000 × 100! (mod 707)? (dimana n! = n × (n-1) × (n-2) … × 2 × 1, sedangkan x (mod y) berarti sisa bagi dari x dengan y dengan nilai antara 0 sampai y - 1):

Jawaban: ……………. {tuliskan jawaban dalam bentuk ANGKA saja}

Nomor 18 :

Pak Dengklek sedang ingin berkeliling mengunjungi tempat-tempat wisata yang ada di Pulau Jawa. Ada 10 kota yang ingin dikunjungi oleh Pak Dengklek, yaitu: Jakarta, Bogor, Bandung, Purwakarta, Tasikmalaya, Cirebon, Semarang, Yogya, Solo dan Surabaya. Pak Dengklek sudah mensurvei jalur antar kota-kota tersebut dan mencatat biaya perjalanan dengan bus antara beberapa kota. Berikut adalah informasi biaya ongkos bus (satu arah) antar kota yang didapatkan pak Dengklek.

Setiap jalur antar kota bersifat dua arah, dengan harga yang sama. Misalnya, Pak Dengklek dapat menaiki bus dari Bogor ke Jakarta dengan harga yang sama (Rp 30 ribu rupiah). Jika Pak Dengklek harus memulai perjalanan dari Jakarta, dan dapat mengakhiri perjalanan di kota mana saja, asalkan semua kota terkunjungi, berapakah total biaya minimal yang diperlukan Pak Dengklek?

Jawaban: ……………. {tuliskan jawabannya dalam ribuan rupiah (misalnya, tuliskan 250 jika jawaban Anda adalah Rp 250 ribu rupiah)}

Nomor 19 :

Pak Dengklek memiliki lahan yang berukuran 1×10 yang nantinya akan ditempatkan tiga jenis kandang dengan ukuran berbeda yaitu ukuran 1×1, 1×2 dan 1×4. Berikut adalah dua contoh penempatan kandang pada lahan Pak Dengklek:

Jika jumlah kandang tidak terbatas, ada berapa banyak cara yang bisa dilakukan oleh Pak Dengklek untuk menyusun kandang-kandang tersebut ?

Jawaban: ……………. {tuliskan jawaban dalam bentuk ANGKA saja}

Jawaban :

Nomor 20 :

Jika diberikan sembilan buah patok pada lahan Pak Dengklek sebagai berikut:

Pak Dengklek ingin membuat sebuah kandang yang berbentuk segitiga dimana setiap pojok sudut kandang harus merupakan patok-patok tersebut. Sisi kandang boleh melewati atau mengandung patok-patok lainnya. Ada berapa banyak kemungkinan kandang yang bisa dibangun oleh Pak Dengklek?

Jawaban: ……………. {tuliskan jawaban dalam bentuk ANGKA saja}

Jawaban :

Nomor 21 :

Perhatikan papan berikut!

Bebek-bebek Pak Dengklek yaitu Kwak dan Kwek sedang bermain di atas papan tersebut. Permainan dilakukan secara bergiliran dimulai dari Kwak. Dalam satu giliran, seekor bebek dapat bergerak ke kiri 1 langkah, atau bergerak ke kanan 1 atau 2 langkah. Tentu saja seekor bebek tidak boleh menempati posisi bebek lain maupun melompatinya. Seekor bebek dikatakan kalah ketika tidak dapat bergerak pada saat gilirannya. Jika Kwak dan Kwek boleh menentukan posisi awal ketika memulai permainan, ada berapa kombinasi posisi sehingga bebek yang ada di sebelah kanan memenangkan permainan?

Jawaban: ……………. {tuliskan jawaban dalam bentuk ANGKA saja}

Nomor 22 :

Pada suatu hari terjadi percakapan antara Kwek dan Kwok menggunakan bahasa bebek:

  • “Waak wik wak” kata Kwek, yang artinya “hari ini belajar online”.
  • “Waak wik wuk kwik” kata Kwok, yang artinya “kemarin juga belajar online”.
  • “Nwuk wik wuk” kata Kwek meralat pernyataan Kwok, yang artinya “kemarin belajar tatap muka”.
  • Kwok kemudian bertanya “mwuk?” yang artinya “besok?”.
  • Kwek membalas dengan yakin, “Nwuk wik mwuk kwik.”

Apa arti kalimat yang diucapkan Kwek pada akhir percakapan di atas?

Jawaban: ……………. {tuliskan jawaban dalam bentuk HURUF KECIL saja}

Jawaban :

Untuk menerjemahkan kalimat yang diucapkan oleh Kwek pada akhir percakapan ("Nwuk wik mwuk kwik"), kita perlu memahami arti kata-kata individual dalam bahasa bebek berdasarkan kalimat-kalimat sebelumnya.

Berikut adalah terjemahan yang telah kita ketahui:

  1. "Waak wik wak" artinya "hari ini belajar online".
  2. "Waak wik wuk kwik" artinya "kemarin juga belajar online".
  3. "Nwuk wik wuk" artinya "kemarin belajar tatap muka".
  4. "mwuk?" artinya "besok?".

Dari kalimat-kalimat tersebut, kita bisa membuat beberapa asosiasi:

  • "Waak" artinya "hari ini".
  • "wik" artinya "belajar".
  • "wak" artinya "online".
  • "wuk" artinya "kemarin".
  • "Nwuk" artinya "tatap muka".
  • "kwik" artinya "juga".
  • "mwuk" artinya "besok".

Sekarang, kita terjemahkan kalimat terakhir "Nwuk wik mwuk kwik":

  • "Nwuk" berarti "tatap muka".
  • "wik" berarti "belajar".
  • "mwuk" berarti "besok".
  • "kwik" berarti "juga".

Jadi, kalimat "Nwuk wik mwuk kwik" diterjemahkan menjadi: "Besok juga belajar tatap muka."

Nomor 23 :

Pak Dengklek memiliki ladang berukuran N×M petak dimana setiap petaknya berisi satu buah kandang yang memiliki ketinggian tertentu. Kwak sangat suka bermain di ladang tersebut untuk berjalan-jalan di atas kandang. Karena Kwak takut akan ketinggian, dia hanya bisa berpindah dari satu kandang ke kandang lain secara horizontal, vertikal, diagonal jika selisih ketinggian kandangnya maksimal satu. Sebagai contoh misalnya ladang Pak Dengklek berukuran 3×4 petak dengan ketinggian masing-masing kandang sebagai berikut:

Jika Kwak berjalan mulai dari kandang di posisi paling kiri atas dan ingin menuju kandang di posisi paling kanan bawah, maka banyak kandang minimal yang harus dilalui adalah 7, yaitu melalui kandang dengan ketinggian berturut-turut 3, 4, 5, 6, 7, 8, dan 9. Jika diketahui ukuran kandang Pak Dengklek adalah 5×6 petak dengan ketinggian masing-masing kandang adalah sebagai berikut:

Berapa jumlah kandang minimal yang bisa dilalui oleh Kwak jika dia ingin berjalan dari kandang di posisi paling kiri bawah sampai ke kandang di posisi paling kanan atas?

Jawaban: ……………. {tuliskan jawaban dalam bentuk ANGKA saja}

Nomor 24 :

Pak Dengklek memiliki ladang berukuran N×M petak dimana setiap petaknya berisi satu buah kandang yang memiliki ketinggian tertentu. Kwak sangat suka bermain di ladang tersebut untuk berjalan-jalan di atas kandang. Karena Kwak takut akan ketinggian, dia hanya bisa berpindah dari satu kandang ke kandang lain secara horizontal, vertikal, diagonal jika selisih ketinggian kandangnya maksimal satu. Sebagai contoh misalnya ladang Pak Dengklek berukuran 3×4 petak dengan ketinggian masing-masing kandang sebagai berikut:

Jika Kwak berjalan mulai dari kandang di posisi paling kiri atas dan ingin menuju kandang di posisi paling kanan bawah, maka banyak kandang minimal yang harus dilalui adalah 7, yaitu melalui kandang dengan ketinggian berturut-turut 3, 4, 5, 6, 7, 8, dan 9. Jika diketahui ukuran kandang Pak Dengklek adalah 5×6 petak dengan ketinggian masing-masing kandang adalah sebagai berikut:

Jika Kwak bisa memulai dari posisi manapun dan menuju posisi manapun, berapa banyak kandang maksimal (satu kandang hanya boleh dikunjungi satu kali) yang dapat dilalui oleh Kwak adalah?

Jawaban: ……………. {tuliskan jawaban dalam bentuk ANGKA saja}

Nomor 25 :

Pak Dengklek menyusun sekumpulan kubus yang jika dilihat dari depan, atas dan samping kiri adalah sebagai berikut:

Tampak Depan Tampak Atas Samping Kiri Berapakah banyak kubus yang disusun oleh Pak Dengklek?

Jawaban: ……………. {tuliskan jawaban dalam bentuk ANGKA saja}

Jawaban :

Mari kita gabungkan informasi dari ketiga tampilan ini untuk menghitung jumlah total kubus:

  1. Kolom 1:
    • Tampilan depan: 2 kubus
    • Tampilan samping kiri: 3 kubus (termasuk yang tidak terlihat dari depan)
    • Tampilan atas: 1 kubus (termasuk yang tidak terlihat dari depan atau samping kiri)
  1. Total: 3 kubus (termasuk satu yang tidak terlihat di tampilan depan)
  2. Kolom 2:
    • Tampilan depan: 2 kubus
    • Tampilan samping kiri: 2 kubus (termasuk yang tidak terlihat dari depan)
    • Tampilan atas: 1 kubus (tidak ada kubus tambahan)
  1. Total: 2 kubus (termasuk satu yang tidak terlihat di tampilan depan)
  2. Kolom 3:
    • Tampilan depan: 3 kubus
    • Tampilan samping kiri: 1 kubus (termasuk yang tidak terlihat dari depan)
    • Tampilan atas: 3 kubus (termasuk dua yang tidak terlihat dari depan atau samping kiri)
  1. Total: 3 kubus (semua sudah terhitung dari tampilan depan)
  2. Baris 1 (baris bawah di tampilan depan):
    • Semua kolom memiliki 3 kubus di baris ini.
    • Total: 3 kubus
  1. Baris 2 (baris tengah di tampilan depan):
    • Semua kolom memiliki 2 kubus di baris ini.
    • Total: 3 kubus
  1. Baris 3 (baris atas di tampilan depan):
    • Kolom 1: 1 kubus
    • Kolom 2: 1 kubus
    • Kolom 3: 3 kubus
  1. Total: 5 kubus

Total keseluruhan jumlah kubus yang disusun oleh Pak Dengklek adalah: 3 + 2 + 3 + 3 + 3 + 5 = 9 kubus.


Bagian B : Algoritmika

Nomor 26 :

Perhatikan potongan program berikut!

int main() {
    int A, B, C;
    cin >> A >> B >> C;  // Input tiga bilangan bulat A, B, dan C
    B = A - B;           // B diubah menjadi A - B
    C = A - C;           // C diubah menjadi A - C
    A = B + C;           // A diubah menjadi hasil penjumlahan dari B dan C
    cout << (A + B) * C << endl;  // Cetak hasil dari (A+B) * C
    return 0;
}

Berapakah keluaran dari program di atas apabila inputnya 11 6 7?

Jawaban: ……………. {tuliskan jawaban dalam bentuk ANGKA saja}

Nomor 27 :

Perhatikan potongan program berikut!

int main() {
    int A, B, C, D;
    cin >> A >> B >> C >> D;  // Input empat bilangan bulat A, B, C, dan D
    if (A >= B) {
        if (A >= C) {
            if (A >= D) {
                cout << D << endl;  // Kondisi ini salah, seharusnya mencetak nilai terbesar di sini
            } else {
                cout << A << endl;  // Kondisi ini juga salah, seharusnya mencetak nilai terkecil
            }
        } else {
            if (C >= D) {
                cout << D << endl;  // Kondisi ini salah, seharusnya mencetak nilai terbesar
            } else {
                cout << C << endl;  // Kondisi ini salah, seharusnya mencetak nilai terkecil
            }
        }
    } else {
        if (B >= C) {
            if (B >= D) {
                cout << D << endl;  // Kondisi ini salah, seharusnya mencetak nilai terbesar
            } else {
                cout << B << endl;  // Kondisi ini salah, seharusnya mencetak nilai terkecil
            }
        } else {
            if (C >= D) {
                cout << D << endl;  // Kondisi ini salah, seharusnya mencetak nilai terbesar
            } else {
                cout << C << endl;  // Kondisi ini salah, seharusnya mencetak nilai terkecil
            }
        }
    }
    return 0;
}


Berapakah keluaran dari program di atas apabila inputnya 89 78 100 105?

Jawaban: ……………. {tuliskan jawaban dalam bentuk ANGKA saja}

Nomor 28 :

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?

Jawaban: ……………. {tuliskan jawaban dalam bentuk ANGKA saja}

Nomor 29 :

Perhatikan potongan program berikut!

   cin >> A >> B; // Input dua bilangan A dan B

    int C = A;
    int D = B;

    // Menyusun C dan D agar menjadi kelipatan yang sama
    while (C != D) {
        if (C < D) C += A; // Tambah C dengan A jika C lebih kecil dari D
        if (C > D) D += B; // Tambah D dengan B jika C lebih besar dari D
    }

    // Menghitung FPB (Faktor Persekutuan Terbesar) dari A dan B
    while (A != B) {
        if (A < B) B -= A; // Kurangi B dengan A jika A lebih kecil dari B
        if (A > B) A -= B; // Kurangi A dengan B jika A lebih besar dari B
    }

    // Output hasil bagi dari penjumlahan C dan D dengan penjumlahan A dan B
    cout << (C + D) / (A + B);

Berapakah nilai keluaran dari program di atas apabila inputnya 5000 700?

Jawaban: ……………. {tuliskan jawaban dalam bentuk ANGKA saja

Tentu! Berikut adalah kode C++ yang sesuai dengan deskripsi yang Anda berikan:

#include <iostream>
using namespace std;

int main() {
    int A, B;
    cin >> A >> B; // Input dua bilangan A dan B

    int C = A;
    int D = B;

    // Menyusun C dan D agar menjadi kelipatan yang sama
    while (C != D) {
        if (C < D) 
            C += A; // Tambah C dengan A jika C lebih kecil dari D
        else 
            D += B; // Tambah D dengan B jika C lebih besar dari D
    }

    // Menghitung FPB (Faktor Persekutuan Terbesar) dari A dan B
    int tempA = A, tempB = B; // Simpan nilai asli A dan B
    while (tempA != tempB) {
        if (tempA < tempB) 
            tempB -= tempA; // Kurangi B dengan A jika A lebih kecil dari B
        else 
            tempA -= tempB; // Kurangi A dengan B jika A lebih besar dari B
    }

    // Output hasil bagi dari penjumlahan C dan D dengan penjumlahan A dan B
    cout << (C + D) / (tempA + tempB);

    return 0;
}

Penjelasan kode:

  1. Input dua bilangan AAA dan BBB: Program meminta pengguna untuk memasukkan dua bilangan AAA dan BBB.
  2. Menyusun CCC dan DDD agar menjadi kelipatan yang sama: Menggunakan loop while untuk menyamakan CCC dan DDD dengan menambahkan AAA ke CCC atau BBB ke DDD sampai keduanya sama.
  3. Menghitung FPB (Faktor Persekutuan Terbesar): Menggunakan loop while untuk mengurangi nilai AAA dan BBB sampai keduanya sama, sehingga menghasilkan FPB dari AAA dan BBB.
  4. Output hasil: Program mencetak hasil dari penjumlahan CCC dan DDD dibagi dengan penjumlahan AAA dan BBB.

Jadi, kode ini membaca dua bilangan dari input, menyusun kelipatan yang sama, menghitung FPB, dan kemudian mencetak hasil bagi dari penjumlahan kelipatan tersebut dengan penjumlahan FPB.

https://www.online-cpp.com/7jvJOoeRcz

Output :

5000 700

350

Nomor 30 :

Perhatikan potongan program berikut!

    
    for (int i = 0; i < 11; i++) {
        char temp = x[i];
        x[i] = x[13 - (i + 3)];
        x[13 - (i + 3)] = x[10 - i];
        x[10 - i] = temp;
    }

    cout << x << endl;

Jika potongan program dijalankan, seperti apa nilai outputnya? Jawaban: ……………. {tuliskan jawaban dalam HURUF KAPITAL saja}

Berikut adalah kode C++ yang sesuai dengan deskripsi yang Anda berikan:

#include <iostream>
using namespace std;

int main() {
    char x[11] = {'I', 'N', 'F', 'O', 'R', 'M', 'A', 'T', 'I', 'K', 'A'};
    
    for (int i = 0; i < 11; i++) {
        char temp = x[i];
        x[i] = x[13 - (i + 3)];
        x[13 - (i + 3)] = x[10 - i];
        x[10 - i] = temp;
    }

    cout << x << endl;

    return 0;
}

Output :

AKITAMATIKA

Nomor 31 :

Perhatikan potongan program berikut!

int jalanjalan(int kiri, int kanan) {
    int energi = 0;
    while (kiri < kanan) {
        if (kiri % 7 == 0) {
            kiri++;
            energi++;
        } else if (kiri % 3 == 0) {
            kiri += 2;
            energi += 2;
        } else {
            kiri += 3;
            energi += 3;
        }
    }
    return energi;
}

Berapa nilai yang dihasilkan jika dilakukan pemanggilan jalanjalan(10,1000)?

Jawaban: ……………. {tuliskan jawaban dalam bentuk ANGKA saja}

Jawaban :

#include <iostream>
using namespace std;

int jalanjalan(int kiri, int kanan) {
    int energi = 0;
    while (kiri < kanan) {
        if (kiri % 7 == 0) {
            kiri++;
            energi++;
        } else if (kiri % 3 == 0) {
            kiri += 2;
            energi += 2;
        } else {
            kiri += 3;
            energi += 3;
        }
    }
    return energi;
}

int main() {
    int hasil = jalanjalan(10, 1000);
    cout << "Energi yang diperlukan dari 10 ke 1000: " << hasil << endl;
    return 0;
}

Output :

Energi yang diperlukan dari 10 ke 1000: 991

https://www.online-cpp.com/Tek8pboKYS

Nomor 32 :

Perhatikan fungsi berikut!

int kwik(int mangga) {
    int hasil = 0;
    for (int i = 0; i < mangga; i += 4) {
        hasil += i;
    }
    return hasil;
}

int kwek(int apel) {
    int hasil = 0;
    for (int i = 0; i < apel; i += 3) {
        hasil += kwik(i * 3) * i;
    }
    return hasil;
}

int kwak(int jeruk) {
    int hasil = 0;
    for (int i = 0; i < jeruk; i += 2) {
        hasil += kwek(i) + kwik(i * 2);
    }
    return hasil;
}

Berapa nilai yang dihasilkan jika dilakukan pemanggilan kwak(10)?

Jawaban: ……………. {tuliskan jawaban dalam bentuk ANGKA saja}

Jawaban :

#include <iostream>
using namespace std;

int kwik(int mangga) {
    int hasil = 0;
    for (int i = 0; i < mangga; i += 4) {
        hasil += i;
    }
    return hasil;
}

int kwek(int apel) {
    int hasil = 0;
    for (int i = 0; i < apel; i += 3) {
        hasil += kwik(i * 3) * i;
    }
    return hasil;
}

int kwak(int jeruk) {
    int hasil = 0;
    for (int i = 0; i < jeruk; i += 2) {
        hasil += kwek(i) + kwik(i * 2);
    }
    return hasil;
}

int main() {
    int hasil = kwak(10);
    cout << "Hasil dari pemanggilan kwak(10): " << hasil << endl;
    return 0;
}

Output :

Hasil dari pemanggilan kwak(10): 388

https://www.online-cpp.com/QBxKSVC7GE

Nomor 33 :

Perhatikan fungsi berikut!

void bahagia(int A) {
    if (A > 0) {
        int B = A / 2;
        int C = A - (B * 2); // Ini sama dengan A % 2
        cout << C;
        bahagia(B);
    }
}

Berapa nilai yang dihasilkan jika dilakukan pemanggilan bahagia(1111)?

Jawaban: ……………. {tuliskan jawaban dalam bentuk ANGKA saja}

Jawaban :

Jadi kode lengkapnya adalah:

#include <iostream>
using namespace std;

void bahagia(int A) {
    if (A > 0) {
        int B = A / 2;
        int C = A - (B * 2); // Ini sama dengan A % 2
        cout << C;
        bahagia(B);
    }
}

int main() {
    bahagia(1111);
    return 0;
}

Jalankan kode di atas untuk melihat hasilnya secara langsung.

Output : 11101010001

https://www.online-cpp.com/iXlKUPVTdp

Nomor 34 :

Diketahui dua buah fungsi merah() dan putih() sebagai berikut:

int putih(int x) {
    if (x > 0)
        return 1 + putih(x / 2);
    return 0;
}

int merah(int x, int y) {
    if (x == y)
        return putih(x);
    if (x > y)
        return 1 + merah(x - 1, y);
    return 0;
}

Jika dilakukan pemanggilan merah(100, 50), berapakah nilai keluarannya?

Jawaban: ……………. {tuliskan jawaban dalam bentuk ANGKA saja}

Jawaban :

#include <iostream>
using namespace std;

int putih(int x) {
    if (x > 0)
        return 1 + putih(x / 2);
    return 0;
}

int merah(int x, int y) {
    if (x == y)
        return putih(x);
    if (x > y)
        return 1 + merah(x - 1, y);
    return 0;
}

int main() {
    int result = merah(100, 50);
    cout << result << endl;
    return 0;
}

Output : 56

https://www.online-cpp.com/GeAwkWEL21

Nomor 35 :

Didefinisikan sebuah fungsi rekursif sebagai berikut:

int hitung(int x, int y) {
    if (x + y == 0) return y;
    if (x >= 0)
        return hitung(x - 1, 2 * y);
    return (x - 1, y - 1) + 1;

Tentukan nilai kembalian dari pemanggilan hitung(10, 5)?

Jawaban: ……………. {tuliskan jawaban dalam bentuk ANGKA saja}

Jawaban :

#include <iostream>
using namespace std;

int hitung(int x, int y) {
    if (x + y == 0) return y;
    if (x >= 0)
        return hitung(x - 1, 2 * y);
    return (x - 1, y - 1) + 1;
}

int main() {
    int result = hitung(10, 5);
    cout << result << endl;
    return 0;
}

Output : 10240

https://www.online-cpp.com/iI801LQaUY

-- Akhir dari Soal --







Complete and Continue