OLIMPIADE SAIN PROVINSI (OSP) BIDANG INFORMATIKA 2006 Untuk dikerjakan Selama 150 menit (2 ½ jam) Bagian Informasi Sistem penilaian: Jawaban benar = 4, jawaban salah = –1, jawaban kosong = 0, jawaban ganda= –1 . penjelasan sejumlah notasi yang digunakan dalam naskah soal. Bilangan 2n adalah bilangan pangkat dari 2 sebanyak n kali. N! adalah bilangan faktorial N yang berharga hasil perkalian semua bilangan bulat mulai dari 1 sampai dengan N. Bilangan non-negatif adalah bilangan yang tidak berharga negatif (nol termasuk bilangan non-negatif). Notasi “A mod B”, dengan A dan B bilangan-bilangan bulat menghasilkan sisa pembagian A dengan B, misalnya 10 mod 3 = 1 karena 10 jika dibagi 3 akan menyisakan 1. Notasi “A div B”, dengan A dan B bilangan-bilangan bulat menghasilkan hasil pembagian A dengan B, dengan hanya mengambil bilangan bulatnya saja misalnya 10 div 3 = 3 karena 10 dibagi 3 berharga 3,333… dan bilangan bulatnya 3. Notasi “abs(A)” dengan A bilangan nyata akan menghasilkan harga positif dari bilangan tersebut. Misalnya abs(-4.5) = 4.5 dan abs(3.2) = 3.2. Notasi “trunc(A)” dengan A bilangan nyata akan menghasilkan bilangan bulatnya saja, misalnya trunc(4.5) = 4, dan trunc(-4.5) = -4. Notasi “sqrt(A)” dengan A bilangan nyata non-negatif maka menghasilkan akar dari A (atau A), misalnya sqrt(9) = 3. Notasi “length(A)” dengan A merupakan string menghasilkan panjang dari string tersebut (termasuk semua karakter di dalamnya), misalnya length(„Viva TOKI 2008‟) = 14. Operasi boolean adalah operasi logika . Untuk membantu mengingatnya berikut ini table opersi-operasi yang muncul dalam naskah soal.. A B not A A and B A or B FALSE FALSE TRUE FALSE FALSE FALSE TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE TRUE TRUE TRUE FALSE TRUE TRUE Ekspresi Boolean adalah ekspresi yang dibentuk atas satu atau lebih operasi Boolean dari satu atau lebih variable Boolean. Sejumlah soal (atau jawaban) dituliskan dalam dua kolom, maka perhatikan penomoran soal dan jawabannya. Soal Bidang Informatika Halaman 1 OSP 2006 - TOKI XIII 2007 BAGIAN A: ARITMATIKA (12 SOAL) 1. Seorang wanita menerima warisan sebesar 13 dari harta suaminya seorang pengusaha yang meninggal dunia karena kecelakaan pesawat. Dan tiga orang putranya juga menerima masing-masing 13 dari sisanya. Jika wanita tersebut dan salah seorang anaknya menerima total sebesar Rp. 6 milyar, berapakah total harta yang ditinggalkan oleh pengusaha tersebut ? (A) Rp. 9 milyar (B) Rp. 9,6 milyar (C) Rp. 10.8 milyar (D) Rp. 13.5 milyar (E) Rp. 18 milyar 2. Jika x = 0.888, y = 0.888 , dan z = (0.888)2, manakah pernyataan berikut yang paling benar ? (A) x < y < z (B) x < z < y (C) y < x < z (D) y < z < x (E) z < x < y 3. Jika n adalah nilai rata-rata dari tiga buah angka yaitu 6, 9, dan k berapakah nilai k sesungguhnya ? (A) 3n – 15 (B) n – 5 (C) n – 15 n 15 3 n 15 (E) 3 (D) 4. Mini memiliki uang 3 ribu rupiah lebih banyak dari pada Budi, tapi lebih sedikit 5 ribu dari pada yang dimiliki Yuli, Jika Mini memiliki x ribu rupiah, berapakah jumlah uang yang dimiliki oleh Budi dan Yuli ? (A) 2x – 8 (B) 2x – 5 (C) 2x – 2 (D) 2x + 2 (E) 2x + 8 5. Seorang Pedagang membeli buku dari penyalur di kawasan Pasar Cikapundung, Bandung seharga Rp. 36.000, dia harus menyisakan biaya ongkos sebesar 10%. Selain itu dia juga harus menyisakan keuntungan sebesar Rp. 9.000 per bukunya. Harga jual buku tersebut akan naik berapa persen jika dibandingkan harga belinya ? (A) 27.5 % (B) 35 % Soal Bidang Informatika Halaman 2 (C) 45 % (D) 25 % (E) 15 % 6. Ibu Dina sedang mencoba untuk membuka usaha ‘bakery’ disebuah ruko di perumahan elit di kawasan Cibubur. Dari resep yang ia pelajari, untuk suatu campuran adonan brownies kukus diperlukan 1½ cangkir terigu dan 4½ cangkir air. Bila ternyata sisa tepung terigu yang tersisa di lemari tinggal ¾ cangkir, berapa cangkirkah air yang diperlukan ? (A) 2 cangkir (B) 2 ¼ cangkir (C) 3 ½ cangkir (D) 2 ¼ cangkir (E) Sesuai dengan resep 7. Hitunglah (80! 38!) /(77! 40!) (A) 316 (B) 2023 (C) 871 (D) 412 (E) 391 8. Jumlah dua digit pertama dari bilangan hasil perkalian 530003 810004 adalah (A) 16 (B) 6 (C) 14 (D) 10 (E) 8 9. Dalam suatu deret bilangan bulat {xi, i > 0}, xi+1 = 2 xi. (bilangan berikutnya = dua kali bilangan sebelumnya). Jika jumlah enam bilangan pertama berurutan adalah 693 maka bilangan ketiganya adalah (A) 121 (B) 100 (C) 77 (D) 44 (E) 11 Untuk nomor penjelasan ini soal 10-12 perhatikan Ingat bahwa perkalian tiga matriks A.B.C dapat dilakukan dengan cara (A.B).C, yaitu A.B terlebih dahulu kemudian hasilnya dengan C atau A.(B.C), yaitu B.C diperkalikan terlebih dahulu kemudian OSP 2006 - TOKI XIII 2007 A dikalikan dengan hasilnya. Jika suatu fungsi perkalian matriks “dihargai” sbb. Dua matriks A berukuran baris x kolom = m x n dikalikan matriks B berukuran = n x p maka harga perkalian matriks tersebut adalah m x n x p. 10. Diberikan matriks-matriks A, B, C, dan D masingmasing berukuran 20x200, 200x20, 20x100, 100x10. Berapakah harga untuk urutan perkalian (A.B).(C.D) ? (A) 820.000 (B) 680.000 (C) 420.000 (D) 104.000 (E) 800.000 11. Diberikan perkalian dari empat matriks A.B.C.D yang masing-masing berukuran 20x200, 200x20, 20x100, 100x10. Manakah urutan perkalian matriks yang membutuhkan biaya paling murah? (A) (B) (C) (D) (E) ((A.B).C).D (A.B).(C.D) (A.(B.C)).D A.((B.C).D) A.(B.(C.D)) 12. Diberikan perkalian dari empat matriks A.B.C.D yang masing-masing berukuran 20x200, 200x 20, 20x 100, 100x10. Manakah urutan yang memberikan harga paling mahal dari kemungkinan-kemungkinan berikut ini? (A) ((A.B).C).D (B) (A.B).(C.D) (C) (A.(B.C)).D (D) A.((B.C).D) (E) A.(B.(C.D)) BAGIAN B: ANALITIKA DAN LOGIKA (15 SOAL) Untuk nomor soal 13-16 perhatikan penjelasan ini Di suatu pertemuan ada 4 orang pria dewasa, 4 wanita dewasa, dan 4 anak-anak. Keempat pria dewasa itu bernama: Santo, Markam, Gunawan, dan Saiful. Keempat wanita dewasa itu bernama Ria, Gina, Dewi, dan Hesti. Keempat anak itu bernama Hadi, Putra, Bobby dan Soleh. Sebenarnya mereka berasal dari 4 keluarga yang setiap keluarga terdiri dari seorang ayah, seorang ibu dan satu orang orang anak, namun tidak diketahui yang mana yang menjadi ayah dan mana yang menjadi ibu dan mana yang menjadi anak dari masing-masing keluarga itu. Kecuali, beberapa hal diketahui sebagai berikut. 1) Ibu Ria adalah ibu dari Soleh. 2) Pak Santo adalah ayah dari Hadi. 3) Pak Saiful adalah suami dari Ibu Dewi, tapi bukan ayah dari Bobby. 4) Pak Gunawan adalah suami Ibu Hesti. 13. Putra adalah (A) Anak dari Pak Markam (B) Anak dari Pak Saiful (C) Anak dari Pak Santo (D) Anak dari Pak Gunawan (E) Anak dari Ibu Ria 14. Ibu Gina adalah (A) Isteri Pak Saiful dengan anak bernama Bobby (B) Isteri Pak Gunawan dengan anak bernama Bobby (C) Isteri Pak Markam dengan anak bernama Hadi Soal Bidang Informatika Halaman 3 (D) Isteri Pak Gunawan dengan anak bernama Putra (E) Isteri Pak Santo dengan anak bernama Hadi 15. Ibu Hesti dan Ibu Dewi dan masing-masing keluarganya tinggal di kota Bandung, sementara kedua keluarga lainnya tinggal di kota Jakarta. Siapakah yang tinggal di kota Jakarta (A) Pak Markam (B) Putra (C) Pak Saiful (D) Bobby (E) Pak Gunawan 16. Jika pernyataan (1) di atas dihilangkan, periksalah apakah masih bisa disimpulkan bahwa I. Ibu Ria kemungkinannya bersuamikan Pak Markam atau Pak Santo II. Soleh kemungkinannya anak dari Pak Markam atau Pak Santo III. Ibu Dewi kemungkinannya adalah ibu dari Soleh atau Putra (A) (B) (C) (D) (E) Hanya I yang benar Hanya II yang benar Hanya III yang benar Hanya I dan III yang benar Ketiganya benar OSP 2006 - TOKI XIII 2007 Untuk nomor soal 17-20 perhatikan penjelasan ini Dua permuataan relasi logika: “X mengakibatkan Y” berarti kalau X terjadi, Y pasti/harus terjadi. “Y terjadi hanya jika X terjadi” kalau X terjadi, Y mungkin/bisa terjadi tetapi Y hanya bisa terjadi jika X terjadi. Berikut ini A, B, C, D, E, F, G dan H adalah peristiwaperistiwa yang memiliki relasi logika sbb. (1) A mengkibatkan B atau C, tapi tidak keduanya (2) F terjadi hanya jika B terjadi (3) D terjadi jika B atau C terjadi (4) E terjadi hanya jika C terjadi (5) J terjadi hanya jika E atau F terjadi (6) D mengakibatkan G atau H atau keduanya (7) H terjadi jika E terjadi (8) G terjadi jika F terjadi 17. Jika A memang terjadi, periksalah kebenaran dari pernyataan-pernyataan berikut ini. I. F dan G bisa terjadi II. E dan H bisa terjadi III. D bisa terjadi (A) (B) (C) (D) Hanya I yang benar Hanya II yang benar Hanya III yang benar I dan III bersama, atau II dan III bersama, tetapi tidak keduanya (E) Semua (I, II, dan III) benar 18. Jika B benar terjadi manakah yang juga harus terjadi? (A) D (B) F dan G (C) D dan G (D) G dan H (E) J 19. Jika J terjadi, manakah yang juga harus terjadi? (A) E (B) Baik E dan F (C) Salah satu dari B atau C (D) G (E) Baik B dan C 20. Dari tiga peristiwa A, D, dan F, manakah yang bisa terjadi tanpa bergantung pada relasi-relasi di atas (A) Hanya D (B) Hanya A (C) Hanya A dan D (D) Hanya A dan F (E) A, D, dan F Soal Bidang Informatika Halaman 4 Untuk nomor penjelasan ini soal 21-24 perhatikan Sebuah kontraktor bermaksud membangun 5 ruko pada sebidang lahan kosong dipinggiran sebuah jalan protokol. Kontraktor tersebut sedang bingung untuk memilih diantara 7 rumah yang ada : T, U, V, W, X, Y dan Z. Dinas Tata Kota setempat telah memberikan peraturan bagi kontraktor tersebut : Tidak boleh ada satu modelpun yang dibangun lebih dari satu kali Salah satu model W ataupun model Z harus dibangun, namun dilarang membangung kedua model tersebut semuanya Jika model Y dipilih, maka model V juga harus dipilih Jika model U dipilih, maka model W tidak dapat dipilih 21. Jika model U telah dipilih sebagai salah satu model bangunan, maka model manakah berikut ini yang juga harus ikut dibangun ? (A) T (B) W (C) X (D) Y (E) Z 22. Jika T, U, dan X telah ditentukan sebagai 3 model yang akan dibangun, maka dua model manakah yang juga harus dibangun ? (A) V dan W (B) V dan Z (C) V dan Y (D) W dan Y (E) Y dan Z 23. Manakah diantara berikut ini yang merupakan kombinasi model yang tidak melanggar aturan dari pihak Dinas Tata Kota ? (A) T, U, V, X, Y (B) T, U, X, Y, Z (C) T, V, X Y, Z (D) U, V, W, X, Y (E) Y, U, X, Y, Z 24. Jika model Z adalah salah satu model yang tidak terpilih untuk dibangun, maka model mana lagi yang juga tidak akan dibangun dalam proyek tersebut ? (A) T (B) U OSP 2006 - TOKI XIII 2007 (C) V (D) W (E) X Untuk nomor soal 25-27 perhatikan penjelasan ini Di sebuah bandara internasional di negara antah berantah. Pengelola bandara tersebut menyediakan shutlle bus yang berjalan keliling dari terminal A, terminal B dan terminal Parkir. Bis tersebut berhenti secara berurutan di 4 titik terminal A yaitu terminal A1, terminal A2, terminal A3, terminal A4 yang melayani penerbangan-penerbangan domestik. Kemudian bis tersebut secara berurutan berhenti di 3 titik terminal B yaitu terminal B1, terminal B2 dan terminal B3 yang melayani penerbangan-penerbangan internasional. Dari terminal B 3 bis tersebut menuju terminal Parkir untuk berhenti sejenak, dan kemudian menuju kembali ke terminal A1 dan seterusnya berulang-ulang Di airport tersebut juga disediakan layanan dua buah kereta listrik, salah satunya hanya berjalan dari terminal A3 ke terminal parkir pulang pergi, dan kereta lainnya hanya berjalan dari terminal B2 ke terminal parkir pulang pergi. Alat transportasi tersebut merupakan layanan dari pihak pengelola bandara, dan tidak ada alat transportasi lain di lingkungan bandara tersebut yang dapat dipergunakan. Semua moda tersebut berjalan terus menerus selama 24 jam dan tidak dikenakan biaya bagi siapapun yang ingin memanfaatkannya. 25. Untuk dapat mencapai terminal A4 dari terminal Parkir dengan hanya menjumpai titik pemberhentian yang paling sedikit, seseorang harus menempuh perjalanan dengan : (A) Shuttle bus (B) Kereta listrik ke terminal A (C) Shuttle bus dan kemudian berganti kereta listrik ke terminal A (D) Kereta listrik ke terminal A dan kemudian berganti shuttle bus (E) Kereta listrik ke terminal B dan kemudian berganti shuttle bus 26. Manakah diantara berikut ini yang dapat menjadi pemberhentian kedua bagi seseorang yang pergi dari terminal A2 ke terminal B3 ? (A) A3 (B) B1 (C) B2 (D) B3 (E) Terminal Parkir 27. Jika semua rute perjalanan berikut ini dibuat dengan kemungkinan titik pemberhentian yang paling sedikit, perjalanan yang perlu memanfaatkan kedua kereta listrik dan shutle bus adalah : (A) Dari A2 ke A3 (B) Dari A4 ke B1 (C) Dari Terminal Parkir ke A2 (D) Dari Terminal Parkir ke A4 (E) Dari Terminal Parkir ke B2 BAGIAN C: ALGORITMIKA (23 SOAL) Untuk nomor soal 28-32 perhatikan penjelasan ini Suatu robot berdasarkan harga a bilangan positif yang diberikan, akan menjalankan sederetan perintah berikut: (1) melangkah dengan jarak a ke depan (2) memutar arah ke kanan tegak lurus, (3) melangkah sepanjang 2a, (4) memutar ke arah kiri tegak lurus, (5) melangkah sepanjang ½ a, (6) memutar ke arah kiri tegak lurus, (7) melangkah sepanjang 3½ a, (8) memutar ke arah kiri tegak lurus, (9) melangkah sepanjang a. (10) memutar ke arah kanan tegak lurus. 28. Jika posisi awal ada di (0, 0) dan robot sedang menghadap ke arah sumbu-y positif, deretan Soal Bidang Informatika Halaman 5 perintah tersebut dijalankan dengan a = 2 maka posisi akhir robot adalah (A) (3, 1) (B) (-1, 3) (C) (-3, 1) (D) (-1, -3) (E) (3, -1) 29. Jika posisi awal ada di (0, 0) dan robot sedang menghadap ke arah sumbu-y positif, deretan perintah tersebut dijalankan berulang sebanyak 2 kali dengan a = 2 maka posisi akhir robot adalah (A) (-6, 2) (B) (-4, 2) (C) (4, -2) (D) (-4, -2) OSP 2006 - TOKI XIII 2007 (E) (0, 0) 30. Jika posisi awal ada di (0, 0) dan robot sedang menghadap ke arah sumbu-x positif, deretan perintah tersebut dilakukan secara berulang sebanyak 7 kali dengan a = 1 maka posisi akhir robot adalah (A) (1½, ½) (B) (1½, -½) (C) (-½, 1½) (D) (-½, -1½) (E) (-1½, ½) 31. Jika posisi awal ada di (0, 0) dan robot sedang menghadap ke arah sumbu-x positif, deretan perintah tersebut dilakukan berulang sebanyak 3 kali dengan harga a pertama = 2 , harga a kedua = 4 dan harga a ketiga = 1. Dimanakan posisi akhir robot? (A) (-5.5, 3.5) (B) (-5, 5) (C) (5.5, 2) (D) (6, 3.5) (E) (0, 0) 32. Jika posisi akhir ada di (0,0) dengan robot sedang menghadap ke arah sumbu-y positif setelah deretan perintah tersebut dilakukan berulang sebanyak 5 kali dengan a=4, berada di manakah robot itu sebelumnya? (A) (-2, -6) (B) (6, 2) (C) (6, -2) (D) (6, 6) (E) (0, 0) Untuk nomor soal 33-36 perhatikan penjelasan ini Dalam suatu sistem koordinat terdapat titik-titik pada posisi-posisi bulat integer. Titik-titik tersebut adalah A di (0, 0), B di (10, 2), C di (7, 9), dan D di (5, 12). D C B A Anda diminta menghubungkan titik-titik tersebut dengan suatu garis lintasan tunggal, dengan syarat: I. garis lintasan tersebut tidak bercabang, Soal Bidang Informatika Halaman 6 II. dimulai dari suatu posisi titik tertentu yang diberikan dan berakhir di salah satu titik lainnya setelah melewati setiap titik yang diberikan satu kali, III. lintasan hanya boleh membentuk garisgaris vertikal atau horisontal saja (tidak boleh diagonal, hanya menyusuri garisgaris grid tsb), dan IV. Lintasan antara dua posisi titik tersebut adalah kemungkinan lintasan terpendek 33. Jika dimulai dari A maka lintasan yang paling panjang yang mungkin akan berakhir di (A) D dengan panjang lintasan 46 (B) B dengan panjang lintasan 32 (C) C dengan panjang lintasan 42 (D) D dengan panjang lintasan 41 (E) C dengan panjang lintasan 48 34. Jika dimulai dari C maka lintasan yang paling pendek yang mungkin akan berakhir di (A) A dengan panjang lintasan 30 (B) A dengan panjang lintasan 32 (C) B dengan panjang lintasan 30 (D) B dengan panjang lintasan 27 (E) D dengan panjang lintasan 32 35. Jika dimulai dari A kemudian menerapkan algoritma berikut urutkan titik-titik menurut kenaikan harga x dari setiap titik buat lintasan sesuai urutan tersebut maka lintasan yang terbentuk di antara semua lintasan yang dimulai dari A memiliki panjang yang (A) Terpendek (B) Kedua terpendek (C) Terpanjang (D) Kedua terpanjang (E) Ketiga terpanjang 36. Jika dimulai dari C lalu menerapkan algoritma “terdekat terlebih dahulu” sbb. 1 : X := C 2 : Selama kondisi masih ada titik yang belum masuk dalam lintasan, lakukan: dari semua titik yang belum masuk dalam lintasan, dapatkan titik terdekat dari X dan diperoleh Y hubungkan X dengan Y X := Y 3 : Selesai OSP 2006 - TOKI XIII 2007 Maka, lintasan yang terbentuk di antara semua lintasan yang dimulai dari A memiliki panjang yang (A) Terpendek (B) Kedua terpendek (C) Terpanjang (D) Kedua terpanjang (E) Ketiga terpanjang Untuk nomor soal 37-38 perhatikan penjelasan ini Si Toki senang mencari suatu kata di dalam kamus. Cara mencarinya cukup unik yaitu sbb. 1) membuka bagian tengah buku kamus kemudian melihat apakah kata yang dicari ada di halamanhalaman tersebut, 2) jika tidak ada ia membandingkan kata ysb dengan kata-kata dalam halaman yang ia lihat untuk mengetahui apakah kata tersebut berada di paruh pertama buku tersebut (sebelah kiri dari halaman yang terbuka) atau diparuh kedua (sebelah kanan), 3) pada paruh mana saja, maka ia akan kembali mengulagi langkah (1) namun pecarian hanya pada paruh tsb, dan seterusnya berulang-ulang hingga ia mendapatkan halaman yang berisi kata yang dimaksud. 37. Jika buku kamus berisi 1000 halaman, berapa kali kah kemungkinan paling banyak ia membuka-buka dengan cara di atas hingga kata yang dicari ditemukan (pilih jumlah yang paling mendekati, dan dengan asumsi kata tersebut ada dalam kamus) (A) 10 kali (B) 40 kali (C) 100 kali (D) 250 kali (E) 500 kali 38. Jika si Tono menggunakan cara yang lain dari si Toki yaitu dengan membuka-buka setiap lembar kertas dalam buku itu dari lembar pertama hingga mendapatkan halaman yang berisi kata yang dicari, berapa kali kah paling banyak ia membuka lembar kertas buku kamus yang berisi 1000 halaman itu (pilih jumlah yang paling mendekati, dan dengan asumsi kata tersebut ada dalam kamus). (A) 10 kali (B) 40 kali (C) 100 kali (D) 250 kali (E) 500 kali 39. Diberikan potongan program (Pseudo Pascal) berikut procedure Zz1(t: integer); var k: integer; begin k := 10; while k <= t do begin write(‟*‟); k := k + 10; end; end; Dengan suatu harga pada variabel N dan memanggil Zz1(N) maka jumlah karakter „*‟ yang akan dicetak sebagai fungsi dari N: (dengan c adalah suatu bilangan konstan positif) (A) N/10 (B) (c log N)2 (C) cN (D) c log N (E) N c log N 40. Diberikan potongan program (Pseudo Pascal) berikut procedure Zz2(t: integer); var k: integer; begin k := 1; while k < t do begin j := 1; while j < 100 do begin write(‟*‟); j := j * 10; end; k := k + 1; end; end; Dengan suatu harga pada variabel N dan memanggil Zz2(N) maka jumlah karakter „*‟ yang akan dicetak sebagai fungsi dari N: (dengan c adalah suatu bilangan konstan positif) (A) N/10 (B) (c log N)2 (C) cN (D) c log N (E) N c log N 41. Diberikan potongan program (Pseudo Pascal) berikut procedure Zz3(t: integer); Soal Bidang Informatika Halaman 7 OSP 2006 - TOKI XIII 2007 var k: integer; begin k := 1; while k < t do begin write(‟*‟); k := k * 7; end; end; Dengan suatu harga pada variabel N dan memanggil Zz3(N) maka jumlah karakter „*‟ yang akan dicetak sebagai fungsi dari N: (dengan c adalah suatu bilangan konstan positif) (A) N/10 (B) (c log N)2 (C) cN (D) c log N (E) N c log N 42. Diberikan potongan program (Pseudo Pascal) berikut procedure Zz4(t: integer); var k, j: integer; begin k := t; while k > 0 do begin for j := 1 to t do write(‟*‟); k := k div 2; end; end; Dengan suatu harga pada variabel N dan memanggil Zz4(N) maka jumlah karakter „*‟ yang akan dicetak sebagai fungsi dari N: (dengan c adalah suatu bilangan konstan positif) (A) N/10 (B) (c log N)2 (C) cN (D) c log N (E) N c log N Untuk nomor soal 43-50 perhatikan penjelasan ini Perhatikan array (larik) berikut. Array tsb adalah array integer bernama X yang berdimensi satu dan berisikan 15 elemen array dengan indeks dari 0, 1, … 14. Isi dari masing-masing elemen array itu berturut-turut adalah: I 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 X[I] 194 173 892 489 123 781 273 429 332 878 303 332 234 493 432 Selain itu, terdapat suatu prosedur/fungsi (Pseudo Pascal) procedure Zaff(var a, b: integer); var tmp: integer; begin tmp := a; a := b; b := tmp; end; 43. Pemanggilan Zaff(a,b) untuk variabel a dan b yang sudah berisi harga berlainan menyebabkan (A) Kedua variabel berharga nol (B) Kedua variabel berharga sama yaitu b (C) Kedua variabel berharga sama yaitu a (D) Kedua variabel tidak berubah harga (E) Kedua variabel bertukar harga 44. Jika diberikan potongan program (Pseudo Pascal) berikut procedure Atur1(I: integer): integer; var j: integer; begin Soal Bidang Informatika Halaman 8 for j := I to 13 do begin if (X[j] > X[j+1]) then Zaff(X[j],X[j+1]); write(X[j],‟ ‟); end; end; maka keluaran dari pemanggilan Atur1(10) adalah: (A) 303 332 234 493 432 (B) 303 234 332 432 493 (C) 234 303 332 432 493 (D) 493 432 332 234 303 (E) 493 432 303 332 234 OSP 2006 - TOKI XIII 2007 45. Jika diberikan potongan program (Pseudo Pascal) berikut function yyy(a: integer): integer; begin if (a >= 0) then yyy := a else yyy := -a; end; function zzz: integer; var tmp1,tmp2,j: integer; begin tmp1 := yyy(X[0]-X[1]); for j := 1 to 13 do begin tmp2 := yyy(X[j]-X[j+1]); if (tmp2 > tmp1) then tmp1 := tmp2; end; zzz := tmp1; end; fungsi zzz ini akan melakukan pencarian: (A) Mencari jumlah terbesar dua X berturutturut (B) Mencari harga X terbesar (C) Mencari harga X terkecil (D) Mencari selisih terbesar dua X berturutturut (E) Mencari selisih terkecil dua X berturutturut 46. Jika diberikan potongan program (Pseudo Pascal) berikut Procedure Anehsaja(a,b: integer); var j,k: integer; begin for j := a to b-1 do for k := j+1 to b do if X[j] > X[k] then Zaff(X[j],X[k]); end; Dengan dua variabel s dan t yang sebelumnya sudah berisi harga sbb.: s=0 dan t = 14. Pemanggilan fungsi Anehsaja(s,t) akan melakukan: (A) Mengurutkan menaik (B) Mengacak posisi harga-harga dalam X tanpa arti (C) Tidak terjadi apa-apa (D) Mengurutkan menurun (E) Setiap harga X yang berindeks dari 0 sampai dengan t lebih kecil dari setiap harga X yang berindeks dari s hingga 14. 47. Jika diberikan potongan program (Pseudo Pascal) berikut Soal Bidang Informatika Halaman 9 Procedure Paz(s, t, m: integer); var tmp: integer; begin tmp := X[m]; while l < r do begin while X[l] < tmp do s := s + 1; while tmp < X[r] do t := t – 1; Zaff(X[s],X[t]); end; end; Dengan tiga variabel m, s dan t yang sebelumnya sudah berisi harga sbb.: m=8, s=0 dan t = 14. Pemanggilan fungsi Paz(s, t, m) akan melakukan: (A) Mengurutkan menaik (B) Mengacak posisi harga-harga dalam X tanpa arti (C) Tidak terjadi apa-apa (D) Mengurutkan menurun (E) Setiap harga X yang berindeks dari 0 sampai dengan t lebih kecil dari setiap harga X yang berindeks dari s hingga 14. 48. Jika diberikan potongan program (Pseudo Pascal) berikut function Apakahitu(I: integer): integer; var tmp: integer; begin if (I < 15) then begin tmp := X[I]; Apakahitu := tmp; X[I] := (X[I] + Apakahitu(I+1)) div 2; write(X[I], ' '); end else Apakahitu := 0; end; maka keluaran dari Apakahitu(10) adalah: (A) 216 354 294 313 308 (B) 303 332 234 493 432 (C) 432 493 234 332 303 (D) 876 303 332 234 493 (E) 216 462 363 283 317 pemanggilan 49. Jika diberikan potongan program (Pseudo Pascal) berikut procedure Datangi(I: integer); begin if (I < 15) then begin Datangi(I * 2 + 1); OSP 2006 - TOKI XIII 2007 write(X[I], ‟ ‟); Datangi(I * 2 + 2); end; end; maka keluaran dari pemanggilan Datangi(5) adalah: (A) 234 781 332 (B) 781 332 234 (C) 332 781 234 (D) 332 234 781 (E) 234 332 781 50. Jika diberikan potongan program (Pseudo Pascal) berikut procedure Kocok(I: integer); var j: integer; Soal Bidang Informatika Halaman 10 begin if (I >= 0) and (I < 15) then begin for j := I+1 to 14 do if (X[j] < X[I]) then Zaff(X[j], X[I]); Kocok(I+1); write(X[I],‟ ‟); end end; maka keluaran dari pemanggilan Kocok(10) adalah: (A) 303 332 234 493 432 (B) 234 303 332 432 493 (C) 493 432 332 303 234 (D) 432 493 234 332 303 (E) 303 432 332 493 234 OSP 2006 - TOKI XIII 2007 OLIMPIADE SAIN PROVINSI (OSP) BIDANG INFORMATIKA 2008 Untuk dikerjakan Selama 150 menit (2 ½ jam) Bagian Informasi Sistem penilaian: Jawaban benar = 4, jawaban salah = –1, jawaban kosong = 0, jawaban ganda= –1 . penjelasan sejumlah notasi yang digunakan dalam naskah soal. Bilangan 2n adalah bilangan pangkat dari 2 sebanyak n kali. N! adalah bilangan faktorial N yang berharga hasil perkalian semua bilangan bulat mulai dari 1 sampai dengan N. Bilangan non-negatif adalah bilangan yang tidak berharga negatif (nol termasuk bilangan non-negatif). Notasi “A mod B”, dengan A dan B bilangan-bilangan bulat menghasilkan sisa pembagian A dengan B, misalnya 10 mod 3 = 1 karena 10 jika dibagi 3 akan menyisakan 1. Notasi “A div B”, dengan A dan B bilangan-bilangan bulat menghasilkan hasil pembagian A dengan B, dengan hanya mengambil bilangan bulatnya saja misalnya 10 div 3 = 3 karena 10 dibagi 3 berharga 3,333… dan bilangan bulatnya 3. Notasi “abs(A)” dengan A bilangan nyata akan menghasilkan harga positif dari bilangan tersebut. Misalnya abs(-4.5) = 4.5 dan abs(3.2) = 3.2. Notasi “trunc(A)” dengan A bilangan nyata akan menghasilkan bilangan bulatnya saja, misalnya trunc(4.5) = 4, dan trunc(-4.5) = -4. Notasi “sqrt(A)” dengan A bilangan nyata non-negatif maka menghasilkan akar dari A (atau A), misalnya sqrt(9) = 3. Notasi “length(A)” dengan A merupakan string menghasilkan panjang dari string tersebut (termasuk semua karakter di dalamnya), misalnya length(„Viva TOKI 2008‟) = 14. Operasi boolean adalah operasi logika . Untuk membantu mengingatnya berikut ini table opersi-operasi yang muncul dalam naskah soal.. A B not A A and B A or B FALSE FALSE TRUE FALSE FALSE FALSE TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE TRUE TRUE TRUE FALSE TRUE TRUE Ekspresi Boolean adalah ekspresi yang dibentuk atas satu atau lebih operasi Boolean dari satu atau lebih variable Boolean. Sejumlah soal (atau jawaban) dituliskan dalam dua kolom, maka perhatikan penomoran soal dan jawabannya. Soal Bidang Informatika Halaman 1 OSP 2007 - TOKI XIV 2008 Bagian Analitika (Logika) dan Arimatika (30 soal) 1. Di suatu kampung terdapat sekian rumah. Setiap rumah didiami satu keluarga. Setiap keluarga terdiri dari tepat 2 orang tua (dewasa) dan sejumlah anak-anak yang kebetulan semuanya belum dewasa (apalagi menikah!). Pada suatu sensus diketahui jumlah dewasa lebih banyak dari jumlah anak laki-laki, jmlah anak laki-laki lebih banyak dari jumlah anak perempuan, dan jumlah anak perempuan lebih banyak dari jumlah keluarga itu. Paling sedikitnya (tidak bisa lebih sedikit lagi) ada berapa orang-orang di kampung itu? (A) 15 orang (B) 100 orang (C) 20 orang (D) 50 orang (E) 10 orang 2. Berapakah digit keempat dari kanan pada bilangan 55231? (A) 3 (B) 5 (C) 6 (D) 8 (E) 9 3. Biji-biji catur hendak ditempatkan pada papan catur dengan syarat, tidak ada biji catur pada baris (jalur horisontal) yang sama, tidak ada biji catur pada kolom (jalur vertikal) yang sama, dan tidak ada biji catur pada kedua diagonalnya. Ukuran papan catur 8 baris 8 kolom. Berapa banyak biji catur yang bisa ditempatkan? (A) 6 (B) 7 (C) 8 (D) 9 (E) 10 4. Jika a dan b adalah bilangan bulat, dan a+b adalah bilangan genap. Manakah berikut ini yang pasti tidak mungkin menghasilkan bilangan ganjil: (A) 2*a+b (B) a *a + b*b (C) ab (D) a * b (E) aa * ab 5. Andi menaruh ke dalam 10 gelas 44 buah kelereng. Gelas-gelas semula kosong. Ia ingin membagikannya sedemikian rupa agar sebanyak mungkin gelas-gelas berisikan kelereng dalam jumlah yang berbeda satu Soal Bidang Informatika Halaman 2 sama lain (unik). Berapa banyak gelas yang tidak unik itu minimal? (A) 0 (B) 1 (C) 2 (D) 3 (E) 4 6. Jika a dan b masing-masing adalah sebuah angka antara 0 sampai dengan 9 (termasuk 9), a dan b boleh sama, tentukan bilangan mana kah yang tidak mungkin merupakan hasil dari perkalian 5a3b x 63: (A) 355134 (B) 323316 (C) 374157 (D) 316890 (E) 348831 7. Bila z bilangan bulat positif terkecil yang memberikan sisa 5 jika dibagi dengan 13 dan memberikan sisa 3 jika dibagi dengan 18, berapa sisanya jika dibagi dengan 7 ? (A) 8 (B) 5 (C) 11 (D) 3 (E) 1 8. Seorang pedagang barang elektronik menjual sebuah televisi berwarna layar datar seharga Rp. 3.000.000, jika tarif pajak barang elektronik yang tergolong barang mewah tersebut adalah antara 5 % sampai 8 %, maka harga yang paling mungkin untuk televisi tersebut setelah ditambah pajak adalah : (A) Rp. 3.180.000 (B) Rp. 3.100.000 (C) Rp. 3.120.000 (D) Rp. 3.140.000 (E) Rp. 3.250.000 9. Suatu bilangan pecahan, bila pembilangnya dikali dua dan penyebutnya dibagi dua maka nilai bilangan itu akan : (A) sama dengan nilai awal dari pecahan itu (B) mempunya nilai dua kali lipat dari nilai awal (C) mempunyai nilai setengah dari nilai awal (D) mempunyai nilai seperempat dari nilai awal (E) mempunya nilai empat kali dari nilai awal 10. Jika x2 + 2xy + y2 = 9 maka (x + y)4 adalah : (A) 3 (B) 18 OSP 2007 - TOKI XIV 2008 (C) 27 (D) 36 (E) 81 Deskripsi berikut adalah untuk menjawab soal no 11 - 14 Berikut ini suatu permainan yang akan anda mainkan berdua dengan lawan anda. Dengan saling berhadapan, ditengah-tengah terdapat mangkuk berisi 50 kelereng. Anda dan lawan anda secara bergantian akan mengambil satu sampai dengan lima butir kelereng sekali raih dari mangkuk (tidak boleh lebih dari 5 butir, dan minimal satu butir). Pemain yang melakukan pengambilan terakhir (yang menyebabkan mangkuk kosong) adalah pemenang permainan ini. Lawan anda adalah seorang yang ahli dalam permainan ini sehingga tidak akan membuat kesalahan yang dapat menyebabkan ia menjadi kalah kecuali kondisi yang anda berikan sehingga ia tidak memiliki pilihan untuk menang. 11. Kini giliran anda untuk mengambil pertama kali. Berapakan yang anda ambil pertama kali agar anda akhirnya menang? (A) 1 (B) 2 (C) 3 (D) 4 (E) 5 12. Anda mendapat giliran pertama untuk mengambil dan anda selama ini menjaga situasi agar anda akhirnya menang. Jika permainan berlangsung hingga lawan telah anda mengambil berturut-turut 3, 1, 5, 5, dan 4, dan berikutnya giliran anda. Berapakah jumlah kelereng yang sudah anda ambil sebelum pengambilan anda yang berikutnya (tidak termasuk yang akan anda ambil)? (A) 7 (B) 10 (C) 12 (D) 15 (E) 20 13. Anda mendapat giliran pertama untuk mengambil dan anda selama ini menjaga situasi agar anda akhirnya menang. Jika selama permainan lawan selalu mengambil sebanyak-banyaknya. Berapakah jumlah kelereng yang akhirnya anda kumpulkan hingga selesai (dan anda menang tentunya)? (A) 7 (B) 10 (C) 12 (D) 15 (E) 20 14. Jika banyaknya kelereng semula diperbanyak dan anda tetap sebagai pemain yang mendapat giliran pertama mengambilnya, berapakah jumlah awal kelereng berikut ini yang dapat menyebabkan anda kalah? (A) 102 (B) 121 (C) 77 (D) 155 (E) 82 Deskripsi berikut adalah untuk menjawab soal no 15 - 18 Enam orang bernama A, B, C, D, E, F melakukan perjalanan bersama dalam satu kendaraan. Mereka masingmasing berasal dari kota yang berlainan. Tidak diketahui asal kota masing-masing, yang diketahui kota-kota itu adalah N, C, T, S, M, dan A. Selain itu diketahui juga fakta-fakta berikut. Masing-masing berprofesi tunggal (tidak ada yang memiliki profesi lebih dari satu). A bersama dengan pria yang berasal dari kota N, keduanya dokter. E dan wanita yang dari kota C adalah guru. C dan orang yang dari Tulsa adalah insinyur, B dan F dulu pernah bekerja di luar negeri, tapi orang yang dari Tulsa tidak pernah Orang yang dari M lebih tua dari A Orang yang dari A lebih tua dari C Di kota X, B dan pria dari N turun untuk tidak meneruskan perjalanan Berikutnya, di kota Y, C dan pria dari kota M juga turun untuk tidak meneruskan perjalanan 15. Siapakah pasangan insinyur dan dokter berikut ini Soal Bidang Informatika Halaman 3 (A) A dan B (B) B dan C OSP 2007 - TOKI XIV 2008 (C) A dan C (D) E dan F (E) D dan E 16. Yang dapat diketahui jenis kelaminnya dari statemen di atas adalah: (A) A (B) B (C) C (D) D (E) E 17. Orang yang dipastikan pernah bekerja di luar negeri menurut fakta-fakta tersebut adalah (A) Orang yang dari kota A (B) Orang yang dari kota M (C) Orang yang dari kota T (D) Orang yang dari kota S (E) Orang yang dari kota P 18. Orang yang dipastikan lebih tua dari A menurut fakta-fakta tersebut adalah (A) Seorang guru (B) Seorang dokter (C) Seorang insinyur (D) Seorang wanita (E) Seorang pria Deskripsi berikut adalah untuk menjawab soal no 19 - 21 Seorang koki kue senang iseng-iseng memainkan masakan kuenya ketika sedang memasak. Ia senang sekali membalik-balikkan tumpukan kue-kuenya yang sedang dimasak tersebut. Sebuah pembalikkan kue berarti menaruh kue yang berada pada spatula (alat masak) kemudian membalik seluruh kue dari atas sampai pada kue tersebut sehingga posisi kue teratas dan kue terbawah pada spatula menjadi bertukar beserta seluruh kue yang ada. Karena sang koki sangat ahli, berapa pun kue yang ada di permukaan spatula dapat dibalikkan tanpa jatuh. Tujuan iseng-iseng sang koki adalah untuk mengurutkan kue-kue yang ukurannya tidak ada yang sama tersebut sehingga kue terbesar berada paling bawah dan tersaji rapi ketika diantarkan ke meja pelanggan. 19. Diberikan ukuran diameter kue dari yang paling atas: 1cm, 5cm, 3cm, 4cm, dan 2cm. Jumlah terkecil pembalikkan yang dibutuhkan adalah (A) 1 (B) 2 (C) 5 (D) 7 (E) 9 20. Diberikan ukuran diameter kue dari yang paling atas: 3cm, 1cm, 4cm, 2cm, 5cm, dan 6cm. Jumlah terkecil pembalikkan yang dibutuhkan adalah (A) 4 (B) 10 (C) 8 (D) 3 (E) 6 21. Diberikan 3 buah kue yang belum terurut, dengan diameter: 1cm, 2cm, dan 3cm. Dari semua kemungkinan urutan kue semula, angka jumlah terkecil pembalikkan untuk situasi pengurutan awal yang paling buruk (menyebabkan pembalikan terkecil yang terbesar di antara semua kemungkinan penguruan awal) adalah (A) 0 (B) 1 (C) 2 (D) 3 (E) 4 Deskripsi berikut adalah untuk menjawab soal no 22 - 25 Tiga orang dewasa Roni, Susi, dan Vina bersama dengan lima anak-anak Fredi, Heru, Jono, Lisa dan Marta akan pergi berdarmawisata ke Kebun Binatang dengan menggunakan sebuah kendaraan minibus. Soal Bidang Informatika Halaman 4 OSP 2007 - TOKI XIV 2008 Minibus tersebut memiliki satu tempat di sebelah pengemudi, dan dua buah bangku panjang dibelakang yang masing-masing terdiri dari 3 tempat duduk, sehingga total terdapat delapan tempat duduk di dalam minibus tersebut, termasuk pengemudi. Setiap peserta wisata harus duduk sendiri, masing-masing di sebuah kursi yang ada dan susunan tempat duduk harus disesuaikan dengan beberapa ketentuan sebagai berikut : Pada masing-masing bangku harus terdapat satu orang dewasa yang duduk Salah satu diantara Roni dan Susi harus duduk sebagai pengemudi Jono harus duduk bersebelahan dengan Marta 22. Manakah diantara nama berikut ini yang dapat duduk disebelah pengemudi ? (A) Lisa (B) Jono (C) Roni (D) Susi (E) Vina 23. Jika Fredi duduk bersebelahan dengan Vina, manakah pernyataan berikut ini yang tidak benar ? (A) Jono duduk berdampingan disebelah Susi (B) Lisa duduk berdampingan disebelah Vina (C) Heru duduk di bangku paling depan (D) Fredi duduk di bangku yang sama dengan Heru (E) Heru duduk di bangku yang sama dengan Roni (A) Heru duduk di bangku sebelah depan bangku tempat Marta duduk (B) Lisa duduk di bangku sebelah depan bangku tempat Fredi duduk (C) Fredi duduk di bangku yang sama dengan Heru (D) Lisa duduk di bangku yang sama dengan Sarah (E) Marta duduk di bangku yang sama dengan Vina 25. Manakah diantara kelompok berikut ini yang dapat duduk bersama dalam satu bangku ? (A) Fredi, Jono, dan Marta (B) Fredi, Jono dan Vina (C) Fredi, Susi dan Vina (D) Heru, Lisa dan Susi (E) Lisa, Marta dan Roni 24. Jika Susi duduk di bangku yang berada dibelakang bangku Jono, manakah yang paling benar dari pernyataan berikut ini ? Deskripsi berikut adalah untuk menjawab soal no 26 - 30 Ekspresi logika berikut menggunakan operator and, or, dan not. Operator and mensyaratkan kedua operand harus berharga benar untuk menjadikan ekspresi bernilai benar dan selain itu ekspresi bernilai salah. Operator or hanya mensyaratkan salah satu berharga benar (termasuk boleh keduanya benar) untuk menjadikan ekspresi bernilai benar, jika kedua operand salah maka ekspresi menjadi salah. Operator not adalah untuk menegasikan (yang benar menjadi salah dan yang salah menjadi benar) operand yang tertulis setelahnya. 26. Dari nilai- nilai berikut, pernyataan mana yang bernilai salah jika C, D, E, F bernilai benar. A, B bernilai salah? (A) (A and B) or ((C and D) or E) and F (B) (A or B) and ((C or D) and E) or F (C) (A and B) and ((C or D) or E) or F (D) (A and B) and ((C and D) and E) and F (E) ((A or B) or (C or D) or E) and F Soal Bidang Informatika Halaman 5 OSP 2007 - TOKI XIV 2008 27. Dari nilai- nilai berikut, pernyataan mana yang bernilai benar jika C, D, E, F bernilai salah. A, B bernilai benar? (A) (A and B) or ((C and D) or E) and F (B) (A or B) and ((C or D) and E) or F (C) (A and B) and ((C or D) or E) or F (D) (A and B) and ((C and D) and E) and F (E) ((A or B) or (C or D) or E) and F 28. Dari nilai- nilai berikut, pernyataan mana yang bernilai salah jika A, C, D, E bernilai benar. B, F bernilai salah? (A) (A and B) or ((C and D) or E) and F (B) (A or B) and ((C or D) and E) or F (C) (A and B) and ((C or D) or E) or F (D) (A and B) and ((C and D) and E) and F (E) ((A or B) or (C or D) or E) and F 29. Dari nilai- nilai berikut, pernyataan mana yang bernilai benar jika B, C, D, E bernilai benar. A, F bernilai salah? (A) (A and B) or ((C and D) or E) and F (B) (A or B) and ((C or D) and E) or F (C) (A and B) and ((C or D) or E) or F (D) (A and B) and ((C and D) and E) and F (E) ((A or B) or (C or D) or E) and F 30. Ekspresi not((not(a))or(b)) sama dengan (A) (a)and(not(b)) (B) (a)or(not(b)) (C) (not(a))and(not(b)) (D) TRUE (E) FALSE Bagian Algoritmika (30 soal) Potongan algoritma berikut untuk menjawab pertanyaan 31 - 32 Procedure kocok(d: integer; kata: string); var i: integer; c : char; begin i:=1; repeat c := kata[i]; kata[i] := kata[i+d]; kata[i+d] := c; i:= i+1; until (i=length(kata)-1); Soal Bidang Informatika Halaman 6 OSP 2007 - TOKI XIV 2008 writeln(kata); end; 31. Apa yang dicetaknya pada pemanggilan kocok(1, 'GO GET GOLD') ? (A) GO GET GOLD (B) O GET GOLDG (C) DGO GET GOL (D) GET GOLDOG (E) go get gold 32. Apa yang dicetaknya pada pemanggilan kocok(2, 'GO GET GOLD') ? (A) GO GET GOLD (B) O GET GOLDG (C) DGO GET GOL (D) GET GOLDOG (E) go get gold Potongan algoritma berikut untuk menjawab pertanyaan 33 - 35 c := 0; d := 0; while (a>b) do begin a:= a-b; c:= c+1; d:= d+b; end; writeln(c, „, „,d); 33. Jika nilai a=23, b=4, maka keluaran dari algoritma di atas adalah: (A) 3, 33 (B) 1, 4 (C) 0, 0 (D) 6, 23 (E) 5, 20 34. Jika nilai a=34, b=11, maka keluaran dari algoritma di atas adalah: 35. Jika nilai a=11, b=50, maka keluaran dari potongan program di atas tesebut adalah: (A) 3, 33 (B) 1, 4 (C) 0, 0 (D) 6, 23 (E) 5, 20 (A) 3, 33 (B) 1, 4 (C) 0, 0 (D) 6, 23 (E) 5, 20 Potongan algoritma berikut un tuk menjawab pertanyaan 36 - 39 procedure panjang (p: integer); var z : array[0..9] of integer; a, b, c, d : integer; x : integer; begin for a:= 0 to 9 do case (a mod 5) of 0 : z[a] := 3; 1 : z[a] := 1; Soal Bidang Informatika Halaman 7 OSP 2007 - TOKI XIV 2008 2 : z[a] := 4; 3 : z[a] := 2; 4 : z[a] := 0; end; for b:= 9 downto 0 do begin x:= 3*z[b]; z[b]:= a - b; end; for c:= 0 to 9 do if (c mod 2 = 0) then z[c]:= z[c] + 5; for d:= 9 downto 0 do if (z[d] < 0) then z[d] := z[d] * -1; writeln(z[p]); end; 36. Apakah keluaran yang dihasilkan algoritma di atas dalam pemanggilan panjang(9)? (A) 8 (B) 6 (C) 4 (D) 2 (E) 0 38. Apakah keluaran yang dihasilkan kode di atas dalam pemanggilan panjang(8)? (A) 8 (B) 6 (C) 4 (D) 2 (E) 0 37. Apakah keluaran yang dihasilkan algoritma di atas dalam pemanggilan panjang(5)? (A) 8 (B) 6 (C) 4 (D) 2 (E) 0 39. Apakah keluaran yang dihasilkan kode di atas dalam pemanggilan panjang(7)? (A) 8 (B) 6 (C) 4 (D) 2 (E) 0 Potongan algoritma berikut untuk menjawab pertanyaan 40 - 43 {Note: array Tabel berindeks dari 1 s.d. 10} for i:=1 to 10 do Tabel[(i*7 mod 10)+1] := (5+i*3) div 4; 40. Berapakah nilai dari elemen Tabel dengan indeks pertama? (A) 1 (B) 3 (C) 7 (D) 8 (E) 10 42. Elemen array Tabel dengan nomor indeks berapakah dengan nilai terkecil dari berikut ini? (A) 1 (B) 3 (C) 7 (D) 8 (E) 10 41. Berapakah nilai dari elemen Tabel dengan indeks ketujuh? (A) 1 (B) 3 (C) 7 (D) 8 (E) 10 43. Elemen array Tabel dengan nomor indeks berapakah dengan nilai terbesar dari berikut ini? (A) 1 (B) 3 (C) 7 (D) 8 (E) 10 Soal Bidang Informatika Halaman 8 OSP 2007 - TOKI XIV 2008 Potongan algoritma berikut untuk menjawab pertanyaan 44 - 45 function f (x, a: integer) : boolean; begin if (x <= a) then if (x = a) then f := true else f := false else f := f (x-a, a); end; 44. Dengan ketentuan awal bahwa x dan a adalah integer positif (>0). Manakah pemanggilan berikut yang akan mencetak harga true? (A) writeln(f(57, 3) and f(62, 7)); (B) writeln(f(53, 7) or f(62, 7)); (C) writeln(f(24, 3) and f(42, 7)); (D) writeln(f(24, 3) and f(47, 2)); (E) writeln(f(43, 2) and f(72, 8)); 45. Dengan ketentuan awal bahwa x dan a adalah integer positif (>0). Manakah pemanggilan berikut yang akan mencetak harga true? (A) writeln(not f(57, 3) and f(62, 7)); (B) writeln(f(53, 7) and f(62, 7)); (C) writeln(f(24, 3) and not f(42, 7)); (D) writeln(not f(24, 3) or f(47, 2)); (E) writeln(not f(43, 2) and f(72, 8)); Potongan algoritma berikut untuk menjawab pertanyaan 46 -48 jdata := n; jml := 1; for i := 0 to jdata-1 do begin jml := 3*jml-1; end; writeln(jml); 46. Jika sebelumnya n berharga 3 berapakah yang dicetak oleh potongan program itu. (A) 58 (B) 42 (C) 14 (D) 26 (E) 15 47. Jika sebelumnya n berharga 1 berapakah 48. Secara umum, dengan n bulat positif apakah harga yang dicetak oleh program itu sebagai fungsi dalam a. (A) 5n – 2 (B) 3n – 3n-1 – … – 31 – 30 (C) 3n-1 + 5 (D) n2 + 5 (E) 3n-1 + 3n-2 … + 31 + 1 yang dicetak oleh potongan program itu. (A) 1 (B) 2 (C) 3 (D) 4 (E) 5 Potongan algoritma berikut un tuk menjawab pertanyaan 49 - 50 Perhatikan prosedur coba(n) berikut. procedure coba(var n: integer); begin if n > 0 then begin n := n div 3; Soal Bidang Informatika Halaman 9 OSP 2007 - TOKI XIV 2008 write(n mod 3); coba(n); end; end; 49. Apa yang akan dicetak saat pemanggilan coba(z) dengan z sebelumnya sudah memiliki harga 49? (A) 0001 (B) 1211 (C) 0121 (D) 1120 (E) 1210 50. Apa yang akan dicetak saat pemanggilan coba(z) dengan z sebelumnya sudah memiliki harga 81? (A) 11201 (B) 00010 (C) 12111 (D) 02112 (E) 22120 Potongan algoritma berikut un tuk menjawab pertanyaan 51 - 52 procedure jalan(n: integer); begin if n > 0 then begin jalan(n div 5); write(n mod 5 + 1); end; end; 51. Pada pemanggilan jalan(49) pada procedure di atas ini apa yang akan dicetaknya kemudian? (A) 222 (B) 52 (C) 49 (D) 255 (E) 5 52. Untuk pemanggilan jalan(100) berapa kalikah perintah write(n mod 5 + 1) akan dilakukan? (A) 6 (B) 2 (C) 9 (D) 10 (E) 5 Potongan algoritma berikut untuk menjawab pertanyaan 53 - 54 function ubah(var n: integer; d: integer): integer; begin if n > 0 then begin ubah := n div d; n := n mod d; end; end; 53. Apa yang akan dicetak setelah pemanggilan writeln(ubah(z, 3),' ',z) jika sebelumnya z berisi harga 49? (A) 16 49 (B) 16 1 (C) 1 49 (D) 49 49 (E) 49 16 54. Apa yang akan dicetak setelah pemanggilan writeln(ubah(z, 50),' ',z) jika sebelumnya z berisi harga 49? (A) 16 49 (B) 16 1 (C) 1 49 (D) 49 49 (E) 49 16 Potongan algoritma berikut untuk menjawab pertanyaan 55 - 56 Soal Bidang Informatika Halaman 10 OSP 2007 - TOKI XIV 2008 procedure call(x:integer); begin if x<>0 then begin write(„*‟); x := x – 1; call(x); x := x + 1; end; end; 55. Apakah output dari pemanggilan call(3) ? (A) *** (B) * (C) ** (D) ******** ... (banyak tak terhingga) (E) ****** 56. Apakah output dari pemanggilan call(-1) ? (A) *** (B) * (C) ** (D) ******** ... (banyak tak terhingga kemudian eror) (E) ****** Dua buah algoritma berikut untuk menjawab pertanyaan 57 - 58 Procedure satu (a: integer); var i: integer; begin i := abs(a); // fungsi absolute while i < 128 do begin i := i * 2; end; writeln ( i ); end; Procedure dua (a: integer); var i: integer; begin i := abs(a); // fungsi absolute repeat i := i * 2; until i >= 128; writeln ( i ); end; 57. Pilih pendapat yang benar dari berikut ini: (A) Yang dicetak kedua prosedur itu selalu mencetak bilangan yang berbeda untuk semua harga a yang digunakan ada pemanggilan satu(a) dan dua(a) (B) Kedua prosedur itu akan selalu mencetakkan bilangan berbeda jika dipanggil dengan satu(x) dan satu(y) dengan harga x berbeda dari y. (C) Kedua prosedur itu sama-sama tidak dapat bekerja untuk harga a bilangan negatif (D) Kedua prosedur tidak akan melakukan perintah “i := i * 2” untuk a = 128 karena kondisi tidak terpenuhi. (E) Kedua prosedur itu sama-sama mendapatkan harga |a|.2k terkecil yang lebih besar atau sama dengan dari 128, jika a berharga 1 s.d. 127. 58. Agar kedua tidak terjadi infinite loop untuk pemanggilan dengan harga a = 0, maka apa yang perlu dilakukan (bilangan yang dicetak untuk a yang lain tetap sama): (A) Mengganti perintah “i := abs(a)” dengan perintah i := abs(a) + 1” di kedua prosedur (B) Menambahkan pemeriksaan “if (i > 0) then” sebelum perintah writeln di kedua prosedur (C) Menambahkan pemeriksaan “if (i >= 0) then” sebelum perintah while di prosedur satu dan sebelum perintah repeat sebelum prosedur dua. (D) Menambahkan pemeriksaan “if (i < 0) then exit;” sebelum perintah while di prosedur satu dan sebelum perintah repeat sebelum prosedur dua. (E) Mengganti “i< 128” dengan “i <= 128” pada pemeriksaan kondisi loop while prosedur satu dan mengganti “i>= 128” dengan “i > 128” pada pemeriksaan kondisi loop repeat-until prosedur dua. 59. Perhatikan deretan perintah berikut: Soal Bidang Informatika Halaman 11 OSP 2007 - TOKI XIV 2008 a := b + a; b := a – b; a := a – b; Manakah dari pilihan berikut yang akibatnya sama dengan deretan di atas? (A) b := b - a; a := b + a; a := b - a; (B) a := b + a; a := b - a; b := b - a; (C) a := b - a; b := b - a; a := b - a; (D) a := b - a; b := b - a; a := b + a; (E) a := b + a; b := b + a; a := b + a; 60. Perhatikan algoritma berikut: Procedure geser(i: integer); begin i := (((i shl 4) shr 6) shl 2); writeln(i); end; Apakah output dari pemanggilan geser(9) di atas? (A) 1 (B) 0 (C) 2 (D) 3 (E) 4 Akhir dari berkas soal Soal Bidang Informatika Halaman 12 OSP 2007 - TOKI XIV 2008 OLIMPIADE SAIN PROVINSI (OSP) BIDANG INFORMATIKA 2008 Untuk dikerjakan Selama 150 menit (2 ½ jam) Bagian Informasi Sistem penilaian: Jawaban benar = 4, jawaban salah = –1, jawaban kosong = 0, jawaban ganda= –1 . penjelasan sejumlah notasi yang digunakan dalam naskah soal. Bilangan 2n adalah bilangan pangkat dari 2 sebanyak n kali. N! adalah bilangan faktorial N yang berharga hasil perkalian semua bilangan bulat mulai dari 1 sampai dengan N. Bilangan non-negatif adalah bilangan yang tidak berharga negatif (nol termasuk bilangan non-negatif). Notasi “A mod B”, dengan A dan B bilangan-bilangan bulat menghasilkan sisa pembagian A dengan B, misalnya 10 mod 3 = 1 karena 10 jika dibagi 3 akan menyisakan 1. Notasi “A div B”, dengan A dan B bilangan-bilangan bulat menghasilkan hasil pembagian A dengan B, dengan hanya mengambil bilangan bulatnya saja misalnya 10 div 3 = 3 karena 10 dibagi 3 berharga 3,333… dan bilangan bulatnya 3. Notasi “abs(A)” dengan A bilangan nyata akan menghasilkan harga positif dari bilangan tersebut. Misalnya abs(-4.5) = 4.5 dan abs(3.2) = 3.2. Notasi “trunc(A)” dengan A bilangan nyata akan menghasilkan bilangan bulatnya saja, misalnya trunc(4.5) = 4, dan trunc(-4.5) = -4. Notasi “sqrt(A)” dengan A bilangan nyata non-negatif maka menghasilkan akar dari A (atau A), misalnya sqrt(9) = 3. Notasi “length(A)” dengan A merupakan string menghasilkan panjang dari string tersebut (termasuk semua karakter di dalamnya), misalnya length(„Viva TOKI 2008‟) = 14. Operasi boolean adalah operasi logika . Untuk membantu mengingatnya berikut ini table opersi-operasi yang muncul dalam naskah soal.. A B not A A and B A or B FALSE FALSE TRUE FALSE FALSE FALSE TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE TRUE TRUE TRUE FALSE TRUE TRUE Ekspresi Boolean adalah ekspresi yang dibentuk atas satu atau lebih operasi Boolean dari satu atau lebih variable Boolean. Sejumlah soal (atau jawaban) dituliskan dalam dua kolom, maka perhatikan penomoran soal dan jawabannya. Soal Bidang Informatika Halaman 1 OSP 2008 - TOKI XIV 2009 Bagian Analitika (Logika) dan Arimatika (30 soal) 1. Pepen berdiri sejauh 18 meter di sebelah utara Tugu Pemuda, Fanny berdiri 24 meter di sebelah barat Tugu yang sama. Berapakah jarak terdekat antara Fanny dan Pepen yang dapat ditempuh ? a. b. c. d. e. 30 meter 900 meter 6 meter 42 meter 90 meter 9 5 6 7 3 99100 98101 10597 10198 10099 4. Jika a, b, c, d dan e adalah bilangan-bilangan bulat yang tidak nol dan tidak negatif serta tidak ada yang sama, dan diketahui pula a+b+c+d=10, berapakah harga terbesar yang mungkin dari ab+cd ? a. b. c. d. e. 10 32 25 14 > 50 5. Di dalam suatu kotak terdapat 2N buah bola dan di antaranya terdapat N bola berwarna putih dan N bola beraneka warna secara unik (satu bola satu warna, tidak ada yang sama) dan tidak putih. Berapa banyak kombinasi untuk memilih N bola dari 2N bola itu? (Catatan: Dalam perhitungan kombinasi, AAB dan ABA dianggap sama.) Soal Bidang Informatika a. b. c. d. e. 205 210 211 212 220 7. Berapa banyak segi empat yang terbentuk dari tabel berukuran 3x3? 3. Manakah yang nilainya paling besar? a. b. c. d. e. 2N (2N / 2) 2N N! (2N)! / N! 6. Pak Dengklek memiliki buku yang bernomor halaman mulai 1 s.d. N. Jika semua nomor halaman buku tersebut ditulis secara berderet dibutuhkan 552 digit. Berapakah N? 2. Apabila dua buah bilangan 2n dan 5n (di mana n adalah bilangan bulat positif) dimulai dengan digit yang sama, maka digit tersebut adalah... (Catatan: bilangan dituliskan dengan notasi desimal, tanpa diawali nol.) a b c d e a. b. c. d. e. Halaman 2 a. 36 b. 27 c. 30 d. 40 e. 35 8. Pak Ganesh menulis angka 1 s.d. 10000. Berapa banyak angka 1 yang muncul pada hasil tulisan Pak Ganesh? a. b. c. d. e. 5000 1000 3001 2092 3505 9. Di suatu provinsi, diadakan lomba voli tiap 3 tahun sekali, lomba bulutangkis tiap 4 tahun sekali, lomba sepak bola tiap 7 tahun sekali, dan lomba tenis tiap 6 tahun sekali. Pada tahun 2000 semua lomba tersebut diadakan. Berapa kali terdapat lebih dari satu lomba dalam setahun dalam periode antara tahun 2005 dan tahun 2017? a. b. c. d. e. Kurang dari 8 kali 8 kali 9 kali 10 kali Lebih dari 10 kali OSP 2008 - TOKI XIV 2009 10. Tahun "semi-kabisat" adalah tahun yang bukan merupakan tahun kabisat, tetapi jika tiap bilangan penyusun angka tahunnya dijumlahkan, hasilnya habis dibagi dengan 4. Ada berapa tahun "semi-kabisat" semenjak tahun 1901 hingga 1960? a. b. c. d. e. 10 12 15 16 18 11. Jika n adalah sebuah bilangan bulat ganjil, maka: (i) n3 – n2 pasti ganjil (ii) n2 – n pasti genap (iii) n3 – n pasti ganjil (iv) n4 – n2 pasti genap Pernyataan yang benar adalah: a. b. c. d. e. (i), (iii) (i), (ii), (iii) (ii), (iv) (ii), (iii), (iv) (iv) 12. Pak Dengklek pertama kali pergi ke pasar Kliwon tanggal 3 Januari 2008 dan kemudian 4 hari sekali setelah itu (7 Januari 2008, 11 Januari 2008, dst). Pak Ganesh pertama kali pergi ke pasar Kliwon tanggal 4 Januari 2008 dan kemudian 5 hari sekali setelah itu (9 Januari 2008, 14 Januari 2008, dst). Pak Blangkon pertama kali pergi ke pasar Kliwon tanggal 5 Januari 2008 dan kemudian 6 hari sekali setelah itu (11 Januari 2008, 17 Januari 2008, dst). Jika bertepatan pada hari yang sama, mereka selalu pergi ke pasar Kliwon bersama-sama. Pada tanggal berapa ketiga orang tersebut pergi bersama-sama untuk kedua kalinya? a. b. c. d. e. 27 April 2008 28 April 2008 29 April 2008 30 April 2008 1 Mei 2008 13. Si Upik pandai menjumlahkan, namun ia hanya dapat menulis angka 1 dan 2. Oleh karena itu, saat Upik ingin menuliskan sebuah angka yang Soal Bidang Informatika Halaman 3 lebih dari 2, ia menuliskan beberapa angka 1 dan beberapa angka 2 sedemikian sehingga jika dijumlahkan jumlahnya adalah bilangan tersebut. Contohnya, untuk menuliskan angka 3, Upik memiliki tepat 3 cara yaitu 12, 21, atau 111 (1+2=3 ; 2+1=3 ; 1+1+1=3). Untuk menuliskan angka 2, sebenarnya Upik memiliki 2 cara yaitu 2 dan 11 (2=2; 1+1=2), tapi hanya ada 1 cara untuk menuliskan angka 1. Berapa banyak cara Upik untuk menuliskan angka 8? a. b. c. d. e. 21 25 30 34 55 14. Pak Dengklek ingin membagikan buku tulis kepada 100 anak panti asuhan. Masing-masing anak mendapat setidaknya satu buku tulis, dan tidak ada anak yang mendapat lebih dari lima buku tulis. Tidak ada seorang anak pun yang mendapat buku tulis lebih banyak dari jumlah buku tulis yang dimiliki dua orang anak lainnya. Jika Aseng, Adi, dan Ujang adalah anak panti asuhan dan Aseng mendapat tiga buku tulis, maka pernyataan manakah yang benar di bawah ini: (i) Ujang mungkin hanya mendapat satu buku tulis. (ii) Jika diketahui Ujang mendapat empat buku tulis, maka Adi tidak mungkin mendapat satu buku tulis. (iii) Tidak mungkin ada anak yang mendapat tepat lima buku tulis. a. b. c. d. e. (i) dan (ii) benar (i) dan (iii) benar (ii) dan (iii) benar (i), (ii), dan (iii) benar Pilihan a sampai d salah semua 15. Pak Dengklek mempunyai anak-anak asuh yang terdiri dari 38 anak laki-laki dan 48 anak perempuan. Tiap kelompok dua anak laki-laki dan satu anak perempuan bisa bermain lompat tali, sementara tiap kelompok dua anak perempuan dan satu anak laki-laki bisa bermain petak umpet. Jika ada anak yang tidak dapat membentuk kelompok, maka mereka tidak bermain. Manakah sisa anak yang tidak bermain yang mungkin: (i) 1 anak laki-laki dan 1 anak perempuan (ii) 2 anak laki-laki OSP 2008 - TOKI XIV 2009 (iii) 2 anak perempuan a. b. c. d. e. (i) dan (ii) benar (i) dan (iii) benar (ii) dan (iii) benar (i), (ii), dan (iii) benar Pilihan a sampai d salah semua 16. Suatu hari Pak Dengklek mengajak Pak Ganesh bermain. Mula-mula Pak Dengklek memberikan sebuah kertas yang sudah bergambar segi empat berukuran 8 cm x 9 cm lalu meminta Pak Ganesh menggambar N buah titik di atas kertas itu sedemikian sehingga tidak ada dua buah titik yang berjarak kurang dari 5 cm (semua titik yang digambar tidak boleh berada di luar segi empat yang sudah tergambar sebelumnya, tetapi boleh di dalam atau tepat pada garis segi empat tersebut). Pak Dengklek menang jika Pak Ganesh tidak mampu menggambar N buah titik dengan syarat tersebut. Berapa N minimal agar Pak Dengklek pasti menang? a. 5 b. 6 c. 7 d. 8 e. 9 17. Pada suatu hari, empat alumni TOKI (berinisial A, B, M, dan P) bertemu. Dua diantaranya membawa pasangan masing-masing makan bersama di warung makan. Kursi yang digunakan bernomor 1 sampai N (secara berurutan) dan meja yang digunakan berbentuk lingkaran sehingga kursi 1 selain bersebelahan dengan kursi 2 juga bersebelahan dengan kursi N. Terdapat satu kursi pemisah antara kursi yang diduduki A dan kursi yang diduduki M. P duduk tepat di sebelah A. Yang membawa pasangan, duduk bersebelahan dengan pasangannya masing-masing. A membawa pasangannya pada pertemuan tersebut. B duduk tepat di sebelah M. Tidak ada kursi kosong. (i) Keempat alumni TOKI duduk di kursi yang nomornya berurutan (ii) A duduk di sebelah B (iii) M tidak membawa pasangannya pada pertemuan tersebut (iv) B tidak duduk di sebelah P (v) M tidak duduk di sebelah P atau P tidak duduk di sebelah B Berapa banyak pernyataan yang pasti benar? Soal Bidang Informatika Halaman 4 a. b. c. d. e. 3 1 4 2 X 0 X Y W A X X Z W 19 X Y W Z 20 X Y X Y 30 28 30 20 16 18. Pada suatu hari di bulan Juli 2007, Pak Dengklek bertamu ke rumah Pak Ganesh. Pak Dengklek berkata, "Aku datang dengan membawa hadiah ulang tahun untukmu. Tetapi maaf, terlambat delapan minggu dan tiga hari." Pak Ganesh menjawab, "Terima kasih. Aku juga sudah menyiapkan kado untuk ulang tahunmu, enam minggu dan enam hari lagi." Kapankah ulang tahun Pak Ganesh berikutnya? a. b. c. d. e. 258 hari lagi 259 hari lagi 306 hari lagi 307 hari lagi 365 hari lagi 19. Perhatikan tabel berikut: A, W, X, Y, Z adalah bilangan bulat. Bilangan-bilangan di kolom terkanan adalah jumlah dari bilangan-bilangan di sebelah kirinya pada baris yang sama. Bilangan-bilangan di baris terbawah adalah jumlah dari bilangan-bilangan di sebelah atasnya pada kolom yang sama. Berapakah A? a. b. c. d. 23 25 28 30 OSP 2008 - TOKI XIV 2009 e. 32 20. Di dalam sebuah kotak terdapat 10 bola merah, 9 bola kuning, dan 8 bola biru. Pak Dengklek membuang satu persatu bola dari dalam kotak secara acak. Berapa jumlah maksimal bola yang boleh dibuang oleh Pak Dengklek sehingga di dalam kotak tetap terdapat 3 bola dengan warna yang sama? a. b. c. d. e. 17 18 19 20 21 a. b. c. d. e. 22. Jika dari sebuah kotak Anda hanya boleh melangkah ke kotak lain yang bersebelahan secara vertikal atau horizontal (tidak boleh diagonal), berapa banyak jalur berbeda dari kotak A untuk sampai ke kotak Z dengan jumlah langkah minimal? a. b. c. d. e. 8 10 12 18 20 Z 8 10 12 18 20 A X X A Z X X 24. Sebuah bilangan bulat positif X memiliki ciri-ciri sebagai berikut: (i) Terdiri dari 5 digit, dan dapat dibagi habis dengan 5 (ii) Digit pertama (puluh ribuan) bukanlah 0, dan bukanlah bilangan prima (iii) Digit kedua (ribuan) lebih besar dari digit ketiga (ratusan) (iv) Jumlah digit ketiga (ratusan) dan kelima (satuan) berupa bilangan ganjil Soal Bidang Informatika (v) Pernyataan (i) dan (ii) benar Pernyataan (i) dan (iii) benar Pernyataan (ii) dan (iii) benar Pernyataan (i), (ii), dan (iii) benar Pilihan a sampai d salah semua Digit kedua (ribuan) merupakan bilangan prima, tetapi tidak habis membagi digit pertama (puluh ribuan) Hasil perkalian digit ketiga (ratusan) dan keempat (puluhan) adalah bilangan ganjil (vi) Berapakah X mod 4 ? 0 1 2 3 Tidak dapat ditentukan 25. Pak Dengklek sedang mempelajari rute penerbangan domestik di Indonesia. Ada penerbangan dari Bandung ke Jakarta, dari Bandung ke Cirebon, dari Cirebon ke Denpasar, dari Banten ke Flores, dari Flores ke Jakarta, dari Bandung ke Denpasar, dari Denpasar ke Jakarta, dari Jakarta ke Medan, dari Medan ke Aceh, dari Aceh ke Flores. Jika ada penerbangan dari kota X ke kota Y bukan otomatis berarti ada penerbangan dari kota Y ke kota X. Jika ada penerbangan dari kota X ke kota Y dan ada penerbangan dari kota Y ke kota Z maka ada penerbangan dari kota X ke kota Z (bisa diatur dengan penerbangan dari kota X ke kota Y dahulu kemudian disambung dari kota Y ke kota Z). a. b. c. d. e. 23. Jika dari sebuah kotak Anda hanya boleh melangkah ke kotak lain yang bersebelahan secara vertikal atau horizontal (tidak boleh diagonal), berapa banyak jalur berbeda dari kotak A untuk sampai ke kotak Z dengan jumlah langkah minimal dan tanpa melalui kotak X? a. b. c. d. e. 21. Jika bilangan x habis dibagi 7 dan bilangan y habis dibagi 21, pernyataan-pernyataan manakah yang benar? (i) x dan y kemungkinan adalah bilangan yang sama (ii) y-x akan berupa bilangan non-negatif (iii) Faktor persekutuan terbesar dari x dan y adalah 7 Halaman 5 (i) (ii) (iii) (iv) Tidak ada penerbangan dari Jakarta ke Banten. Tidak ada penerbangan dari Bandung ke Banten. Tidak ada penerbangan dari Bandung ke Flores. Tidak ada penerbangan dari Cirebon ke Aceh. OSP 2008 - TOKI XIV 2009 Tidak ada penerbangan dari Aceh ke Denpasar. (v) Berapa banyak pernyataan yang benar? a. b. c. d. e. 3 2 1 4 5 26. Pak Dengklek menggambar persegi panjang dengan panjang P cm dan lebar L cm. Lalu ia bagi-bagi persegi panjang tersebut ke dalam P x L buah persegi dengan ukuran masing-masing 1cm x 1cm, dan diberinya koordinat kartesian (1, 1) hingga (P, L). Persegi dengan hasil penjumlahan koordinat x dan y berupa bilangan ganjil akan dicat warna merah, sedangkan sisanya dicat warna biru. Pernyataan manakah yang paling tepat di bawah ini? a. Jumlah persegi yang dicat warna merah akan selalu lebih sedikit dari yang dicat warna biru. b. Jumlah persegi yang dicat warna merah akan selalu lebih sedikit atau sama dengan yang dicat warna biru. c. Jumlah persegi yang dicat warna merah akan selalu lebih banyak atau sama dengan yang dicat warna biru. d. Jumlah persegi yang dicat warna merah akan selalu lebih banyak dari yang dicat warna biru. e. Pilihan a sampai d salah semua Deskripsi untuk soal no. 27 dan 28 Pak Dengklek dan Pak Ganesh pada awalnya berada di titik A. Pak Dengklek berjalan lurus sejauh 30 meter. Lalu Pak Dengklek berputar ke arah yang tidak diketahui, lalu berjalan lurus sejauh 50 meter. Setelah itu, Pak Dengklek berputar ke arah yang tidak diketahui lagi, lalu berjalan lurus sejauh 40 meter. Posisi akhir Pak Dengklek diberi nama titik B. Dari titik A, Pak Ganesh berjalan lurus ke arah yang tidak diketahui sejauh 70 meter. Lalu ia berputar ke arah yang tidak diketahui dan berjalan lurus sejauh 25 meter. Posisi akhir Pak Ganesh diberi nama titik C. 27. Berapa jarak terdekat yang mungkin antara titik B dan titik C? a. b. c. d. e. 0 meter 5 meter 15 meter 25 meter 50 meter 28. Berapa jarak terjauh yang mungkin antara titik B dan titik C? a. b. c. d. e. 0 meter 15 meter 152.4 meter 215 meter 225 meter Deskripsi soal no 29 s.d 30 Pada suatu permainan terdapat empat kantung, masing-masing berisi beberapa kelereng. Di awal permainan, pemain mengeluarkan kelereng dari kantung pertama, lalu memasukkan satu kelereng ke kantung kedua, satu ke kantung ketiga, satu ke kantung keempat, satu ke kantung pertama, satu ke kantung kedua, dan seterusnya hingga semua kelereng sudah masuk kembali ke kantung-kantung. Setelah itu, pemain mengeluarkan semua kelereng dari kantung yang terakhir kali dimasuki kelereng, lalu mengulangi proses yang sama. Permainan terus berlanjut hingga jumlah kelereng yang dikeluarkan pemain dari suatu kantung tepat sebanyak satu buah. Soal Bidang Informatika Halaman 6 OSP 2008 - TOKI XIV 2009 29. Jika isi awal kantung pertama adalah 5 kelereng, isi kantung kedua adalah 3 kelereng, isi kantung ketiga adalah 4 kelereng, dan isi kantung keempat adalah 2 kelereng, saat permainan berakhir, kantung manakah yang kelerengnya baru saja dikeluarkan? a. b. c. d. e. Kantung pertama Kantung kedua Kantung ketiga Kantung keempat Permainan tidak akan pernah berakhir 30. Jika isi awal kantung pertama adalah 5 kelereng, kantung kedua adalah 3 kelereng, kantung ketiga adalah 5 kelereng, berapa jumlah kelereng dalam kantung keempat supaya permainan tidak pernah berakhir? a. b. c. d. e. 0 kelereng 1 kelereng 2 kelereng 3 kelereng Pilihan a sampai d salah semua. Bagian Algoritmika (30 soal) 31. Perhatikanlah potongan kode program sebagai berikut: a b a b a := := := := := 10; 5; b – a; b – a; a + b; Berapakah harga a dan b setelah perintah-perintah berikut ini dijalankan? a b c d e a = 15, b = 5 a = 5, b = 10 a = 5, b = 5 a = 10, b = 10 a = 5, b = 15 32. Perhatikanlah potongan kode program sebagai berikut: a := 100; b := 5; repeat b := b + 1; a := a – b; until a > b; writeln(a,b); Manakah pasangan nilai (a, b) yang dicetak di akhir program? a 94 dan 6 b 100 dan 5 c 10 dan 14 d 10 dan 15 e 5 dan 14 Untuk dua (2) pertanyaan berikutnya perhatikanlah potongan kode program sebagai berikut: program Coba; var Soal Bidang Informatika Halaman 7 OSP 2008 - TOKI XIV 2009 i,j,k,x,y : integer; begin read(x); i := 0; y := 0; while (i < x) do begin for j:=0 to i do y := y + (2 * i); i := i + 1; end; for k:=0 to y do write(‘a’); end. 33. Berapakah y yang dihasilkan di akhir program jika x adalah 3? a 13 b 14 c 15 d 16 e 17 34. Berapakah nilai x minimum yang diperlukan supaya di layar tertulis yang lebih dari 80 huruf ‟a‟ di akhir program? a 2 b 4 c 5 d 10 e 15 Untuk enam (6) pertanyaan berikutnya perhatikanlah potongan kode program sebagai berikut: function HitungJuga (m : integer; n : integer) : integer; begin if (n=0) then HitungJuga := m else HitungJuga := HitungJuga(n, m mod n) end; procedure Hitung (x, y : integer; var z : integer); begin if ((x > 0) and (y > 0)) then z := HitungJuga(x,y) else z := 0; end; 35. Berapakah hasil fungsi HitungJuga jika n = 72 dan m = 84? a 1 b 8 c 12 d 72 e 0 36. Manakah dari nilai-nilai n di bawah ini yang bisa menghasilkan 15 pada fungsi HitungJuga jika diketahui nilai m = 105? a 75 b 105 Soal Bidang Informatika Halaman 8 c d e 50 10 25 37. Berapakah nilai z pada prosedur Hitung jika x = -8 dan y = 12? a 0 b -4 c 4 d 8 e 12 OSP 2008 - TOKI XIV 2009 38. Semua kombinasi x dan y di bawah ini menghasilkan z yang habis dibagi 3 pada prosedur Hitung kecuali: a x = 36, y = 12 b x = 6, y = 24 c d e x = 75, y = 105 x = 100, y = 75 x = 90, y = 18 Untuk tiga (3) pertanyaan berikutnya perhatikanlah kode program lengkap sebagai berikut: Program CobaCoba; var x, y, z, i, k : integer; (*** function Hitung ****) function Hitung (i : integer) : integer; var j, hasil : integer; begin hasil := 0; j := 1; while (j <= i) do begin hasil := hasil + j; j := j + 1; end; Hitung := hasil; end; (*** Program Utama ***) begin x := -1; y := 4; read(z); write(Hitung(x)); for i:=15 downto Hitung(y) do write(‘y’); if (Hitung(z) > 0) then for i:=1 to z do for k:=1 to i do write(‘*’); end. 39. Angka berapakah yang pertama kali tertulis di layar, jika program tersebut dijalankan? a 0 b 1 c d e Soal Bidang Informatika OSP 2008 - TOKI XIV 2009 Halaman 9 2 3 4 40. Berapa banyakah huruf ‟y‟ yang akan tertulis di layar? a 15 b 5 c 0 d 10 e 6 c d e 5 6 7 41. Berapakah z yang harus dimasukkan pengguna untuk menuliskan 15 karakter ‟*‟ di layar? a 2 b 4 Untuk tiga (3) pertanyaan berikutnya, perhatikanlah potongan kode program sebagai berikut: function ABC (a, b : integer) : integer; var hasil : integer; begin if (a mod b = 0) then ABC := b else ABC := ABC(a, b-1); end; function XYZ (X : integer) : integer; begin if (X < 1) then XYZ := -1 else if (X = 1) then XYZ := 0 else XYZ := ABC(X,X-1); end; 42. Berapakah hasil ABC(12, 4)? a -1 b 0 c 1 d 2 e 4 44. Berapakah hasil fungsi XYZ jika X = 100? a 10 b 20 c 30 d 40 e 50 43. Berapakah hasil XYZ(17)? a -1 b 0 c 1 d 2 e 3 Untuk dua (2) pertanyaan berikutnya, perhatikanlah potongan kode program sebagai berikut: function sum(n:integer):integer; begin if (n>0) then sum:=n+sum(n-1) else Soal Bidang Informatika Halaman 10 OSP 2008 - TOKI XIV 2009 sum:=n; end; 45. Hasil dari sum(11) adalah... a. 55 b. 66 c. 11 d. 78 e. 91 46. Agar keluaran fungsi sum(n) berapakah harga n terkecil? a. 11 b. 12 c. 13 d. 14 e. 15 > 100, Untuk dua (2) pertanyaan berikutnya, perhatikanlah potongan kode program sebagai berikut: var i,j,k:integer; begin k:=1; (*inisialisasi*) for i:=1 to 4 do begin k:=k*i; for j:=i+1 to 2*i do begin k:=k+j; end; end; writeln(abs(k)); (*keluaran program*) end. 47. Keluaran dari program di atas adalah... a. 242 b. 1250 c. 54 d. 1 e. 7557 48. Agar program menghasilkan keluaran minimum, nilai k harus diinisialisasi dengan... a. 0 b. -1 c. -9 d. -10 e. -11 Untuk dua (2) pertanyaan berikutnya, gunakan tabel berikut untuk 4 soal berikutnya: I 0 1 2 3 4 5 6 7 8 9 bil[i] 2 0 1 3 6 7 5 10 0 1 if bil[i] > a then a := bil[i] else b := bil[i]; 49. Perhatikan pseudopascal berikut: a := 0; b := 100; pb := 0; pa := 0; for i := 0 to 9 do Soal Bidang Informatika Setelah pseudopascal di atas dijalankan, berapakah nilai a+b? Halaman 11 OSP 2008 - TOKI XIV 2009 a. b. c. d. e. 110 0 10 2 11 50. Perhatikan pseudopascal berikut: a := 0; b := 100; pa := 0; pb := 0; for i := 0 to 9 do if bil[i] > a then begin 51. Perhatikan pseudopascal berikut: a := bil[i]; pa := i; end else if bil[i]<b then begin b := bil[i]; pb := i; end; Setelah pseudopascal di atas dijalankan, berapakah nilai pa+pb? a 2 b 8 c 10 d 17 e 18 function fun2(a:string;b:integer):string; var tmp:string; begin if (length(a) = 10) then fun2 := a else fun2 := fun2(a[(b*b) mod length(a)+1] + a,((b*b) mod length(a))+1); end; Manakah pasangan berikut yang menghasilkan keluaran yang sama? a. fun2('TOKI09',1) dan fun2('TOKI09',4) b. fun2('TOKI09',2) dan fun2('TOKI09',5) c. fun2('TOKI09',3) dan fun2('TOKI09',1) d. fun2('TOKI09',4) dan fun2('TOKI09',2) e. fun2('TOKI09',5) dan fun2('TOKI09',3) 52. Perhatikan pseudopascal berikut: function fun3(a,b,c,d,x:integer):integer; var tmp,i:integer; begin for i:=3 to x do begin tmp:=b; b:=d*a+c*b; a:=tmp; end; fun3:=b; end; Manakah yang menghasilkan bilangan genap? a. fun3(1,1,1,1,10) b. fun3(3,3,1,2,11) c. fun3(3,4,4,5,7) d. fun3(3,4,4,5,7) e. fun3(2,3,1,3,4) Soal Bidang Informatika Halaman 12 OSP 2008 - TOKI XIV 2009 53. Perhatikan pseudopascal berikut: function tes1(n:integer):boolean; var ok:boolean; i:integer; begin ok := true; for i := 2 to trunc(sqrt(n))+1 do if (n mod i) = 0 then ok := false; tes1:=ok; end; Manakah pemanggilan yang menghasilkan false? a. tes1(43) b. tes1(51) c. tes1(53) d. tes1(59) e. tes1(67) 54. Perhatikan pseudopascal berikut: function tes2(n:integer):boolean; var ok:boolean; j,i:integer; begin ok := true; j := 0; for i := 1 to (n div 2) do if (n mod i) = 0 then j := j+i*2; tes2 := (j=2*n); end; Manakah pemanggilan yang menghasilkan true? a. tes2(12) b. tes2(24) c. tes2(28) d. tes2(29) e. tes2(36) 55. Perhatikan pseudopascal berikut: function tes3(n,m:integer):boolean; var i,j,tmp:integer; begin tmp := n; i := 0; while (tmp > 0) do begin if (tmp mod 2) = 1 then i := i+1; tmp := tmp div 2; end; tmp := m; j := 0; while (tmp > 0) do begin if (tmp mod 2) = 1 then j := j+1; tmp := tmp div 2; end; tes3 := i=j; end; Manakah yang menghasilkan true? Soal Bidang Informatika Halaman 13 OSP 2008 - TOKI XIV 2009 a. b. c. d. e. tes3(99,100) tes3(100,120) tes3(56,121) tes3(89,156) tes3(80,173) 56. Perhatikan pseudopascal berikut readln(a); b := 4; while a > 0 do begin b := b + (a mod 10); a := a div 10; end; if ((b mod 3) > 0) or ((b mod 9) > 0) then writeln('Angin bertiup') else writeln('Angin semilir'); Berapakah nilai a yang akan menghasilkan keluaran Angin semilir? a. 23 b. 20 c. 24 d. 21 e. 22 57. Mana pseudopascal di bawah ini yang jika dijalankan dapat mengurutkan tabel berikut: i 1 2 3 4 5 6 7 8 9 10 data[i] 2 0 1 3 6 7 5 10 0 1 menjadi berisi sebagai berikut (N=10): i 1 2 3 4 5 6 7 8 9 10 data[i] 0 0 1 1 2 3 5 6 7 10 a. for i:=1 to N-1 do for j:=i+1 to N do if data[i]<data[j] then begin data[i]:=data[j]; data[j]:=data[i]; end; c. for i:=1 to N-1 do b. for i:=1 to N do Soal Bidang Informatika for j:=i+1 to N-1 do if data[i]>=data[j] then begin temp:=data[i]; data[i]:=data[j]; data[j]:=temp; end; Halaman 14 OSP 2008 - TOKI XIV 2009 for j:=i+1 to N do if data[i]<data[j] then begin temp:=data[i]; data[i]:=data[j]; data[j]:=temp; end; d. for i:=1 to N do for j:=N downto i+1 do if data[j-1]>data[j]then begin temp:=data[j]; data[j]:=data[j-1]; data[j-1]:=temp; end; e. for i:=1 to N-1 do for j:=i to N-1 do if data[i]<data[i+1]then begin temp:=data[i]; data[i]:=data[i+1]; data[i+1]:=temp; end; 58. Mana pseudopascal di bawah ini yang paling tepat jika ingin melakukan pengecekan apakah bil merupakan bilangan 2N (dengan 0<N<30, contohnya : 2, 4, 8, 16, dst.) atau bukan? Jika benar, akan menghasilkan keluaran „Benar‟. Jika salah, akan menghasilkan keluaran „Salah‟. a. readln(bil); duaan:=false; for i:=1 to 30 do if (bil=2^i) then duaan:=true; if duaan then writeln(‘Benar’) else writeln(‘Salah’); b. readln(bil); duaan:=false; while (bil>0) do begin duaan:= (1=(bil mod 2))xor duaan; bil:= bil div 2; end; if duaan then writeln(‘Benar’) else writeln(‘Salah’); c. readln(bil); duaan:=false; while (bil>0) do begin duaan:= (1=(bil mod 2))or duaan; bil:=bil div 2; end; if duaan then writeln(‘Benar’) else writeln(‘Salah’); Soal Bidang Informatika Halaman 15 d. readln(bil); duaan:=false; temp:=1; while (bil>0) do begin temp:=2*temp; if (bil=temp) then duaan:=true; end; if duaan then writeln(‘Benar’) else writeln(‘Salah’); e. readln(bil); duaan:=false; temp:=1; while ((bil-temp)>0) do begin temp:=temp*2; if (bil=temp) then duaan:=true; end; if duaan then writeln(‘Benar’) else writeln(‘Salah’); OSP 2008 - TOKI XIV 2009 59. Nilai dari ekspresi boolean (not A) or (B and C) or (A and (not B) and C) or (A and B) akan selalu sama dengan ekspresi: a (not (C or (not A))) and (not B) or (not A) b (A and (B or C)) or C or ((not A) and (not C)) c (A and (B or C)) or C or (A and C) d (not B) or (not (A and B and (not C))) e (not (C or (not A))) and (not B) 60. Nilai dari ekspresi boolean (not A) or (B and C) or (A and (not B) and C) or (A and B) akan selalu berlawanan dengan ekspresi: a (not (C or (not A))) and (not B) or (not A) b (A and (B or C)) or C or ((not A) and (not C)) c (A and (B or C)) or C or (A and C) d (not B) or (not (A and B and (not C))) e (not (C or (not A))) and (not B) Akhir Dari Naskah Soal Soal Bidang Informatika Halaman 16 OSP 2008 - TOKI XIV 2009 OLIMPIADE SAIN PROVINSI (OSP) BIDANG INFORMATIKA 2009 Untuk dikerjakan Selama 150 menit (2 ½ jam) Bagian Informasi Sistem penilaian: Jawaban benar = 4, jawaban salah = –1, jawaban kosong = 0, jawaban ganda= –1 . penjelasan sejumlah notasi yang digunakan dalam naskah soal. Bilangan 2n adalah bilangan pangkat dari 2 sebanyak n kali. N! adalah bilangan faktorial N yang berharga hasil perkalian semua bilangan bulat mulai dari 1 sampai dengan N. Bilangan non-negatif adalah bilangan yang tidak berharga negatif (nol termasuk bilangan non-negatif). Notasi “A mod B”, dengan A dan B bilangan-bilangan bulat menghasilkan sisa pembagian A dengan B, misalnya 10 mod 3 = 1 karena 10 jika dibagi 3 akan menyisakan 1. Notasi “A div B”, dengan A dan B bilangan-bilangan bulat menghasilkan hasil pembagian A dengan B, dengan hanya mengambil bilangan bulatnya saja misalnya 10 div 3 = 3 karena 10 dibagi 3 berharga 3,333… dan bilangan bulatnya 3. Notasi “abs(A)” dengan A bilangan nyata akan menghasilkan harga positif dari bilangan tersebut. Misalnya abs(-4.5) = 4.5 dan abs(3.2) = 3.2. Notasi “trunc(A)” dengan A bilangan nyata akan menghasilkan bilangan bulatnya saja, misalnya trunc(4.5) = 4, dan trunc(-4.5) = -4. Notasi “sqrt(A)” dengan A bilangan nyata non-negatif maka menghasilkan akar dari A (atau A), misalnya sqrt(9) = 3. Notasi “length(A)” dengan A merupakan string menghasilkan panjang dari string tersebut (termasuk semua karakter di dalamnya), misalnya length(„Viva TOKI 2008‟) = 14. Operasi boolean adalah operasi logika . Untuk membantu mengingatnya berikut ini table opersi-operasi yang muncul dalam naskah soal.. A B not A A and B A or B FALSE FALSE TRUE FALSE FALSE FALSE TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE TRUE TRUE TRUE FALSE TRUE TRUE Ekspresi Boolean adalah ekspresi yang dibentuk atas satu atau lebih operasi Boolean dari satu atau lebih variable Boolean. Sejumlah soal (atau jawaban) dituliskan dalam dua kolom, maka perhatikan penomoran soal dan jawabannya. Soal Bidang Informatika Halaman 1 dari 12 OSP 2009 Bagian Analitika (Logika) dan Arimatika (30 soal) 1. Apabila dua buah bilangan 2n dan (1+3n) (di mana n adalah bilangan bulat positif) diakhiri dengan digit yang sama, maka digit tersebut adalah... (Catatan: bilangan dituliskan dengan notasi desimal, tanpa diawali nol.) A. B. C. D. E. 6 7 8 5 3 7. Manakah yang nilainya paling besar? 2. Dalam dua keranjang terdapat total 22 buah bola. Bola-bola dalam keranjang pertama masing-masing beratnya 15 gram, sementara bola-bola dalam keranjang kedua masing-masing beratnya 20 gram. Berapa selisih perbedaan berat isi kedua keranjang yang mungkin bila diketahui bahwa berat seluruh bola adalah antara 380 hingga 400 gram? A. B. C. D. E. 90 gram 65 gram 75 gram 105 gram 85 gram 3. Nilai dari 262 – 252 + 242 – 232 + … + 42 – 32 + 22 – 12 = … A. B. C. D. E. A. B. C. D. E. 98101 99100 10597 10198 10099 8. Jika a, b, c, dan d adalah bilangan-bilangan bulat yang tidak nol dan tidak negatif serta tidak ada yang sama, dan diketahui pula a+b+c+d=18, berapakah harga terbesar yang mungkin dari (ab – cd) ? A. B. C. D. E. 32 25 28 18 54 9. Ali ingin membuat 800 cc larutan alcohol 15% dengan mencampur laruan alkohol 20% dan 4%. Berapakah beda volume larutan alcohol 20% dan volume 4% yang diperlukan ? 431 472 371 351 451 4. Jika 4! berarti 4.3.2.1=24. Digit terakhir dari 1! + 2! + 3! + …+ 9999! adalah… A. 1 B. 3 C. 5 D. 7 E. 9 5. Berapa persen bilangan antara 1 hingga 50 yang jika dikuadratkan, digit terakhirnya sama dengan 1? A. 1 B. 5 C. 10 D. 11 E. 20 Soal Bidang Informatika 6. Jumlah digit-digit pada bilangan 124 = 1+2+4 = 7. Berapakah jumlah digit-digit pada bilangan 8666.251000 ? A. 1 B. 3 C. 5 D. 7 E. 9 Halaman 2 dari 12 A. B. C. D. E. 110 cc 106 cc 280 cc 24 cc 300 cc 10. Berikut ini 4 pernyataan yang salah kecuali salah satu yang benar: (1) “Sekarang bukan hari Rabu”; (2) “Besok hari Jumat”; (3) “Kemarin hari Minggu”; (4) “Pernyataan 2 dan 3 salah.” Hari apakah sekarang? A. B. C. D. E. Selasa Rabu Kamis Jumat Sabtu OSP 2009 11. Si Ableh dan si Bento adalah dua orang tukang cat yang bekerja mencat sebuah ruangan. Suatu ketika saat mereka telah melalui 6 jam bekerja bersama di sebuah ruangan, si Ableh minta pulang karena jatuh sakit. Si Bento terpaksa meneruskannya sendiri dan baru selesai dalam 12 jam berikutnya. Biasanya mereka berdua dapat menyelesaikannya dalam 10 jam saja. Bila si Bento mengerjakannya sendirian dari awal berapa lama waktu yang perlukan hingga selesai? A. B. C. D. E. 15 jam 36 jam 30 jam 24 jam 20 jam 12. Jika Amir, Budi, dan Dodo adalah tiga anak yang bersahabat. Biasanya mereka diberi uang jajan beberapa lembaran uang ribuan, paling sedikit 1 lembar dan paling banyak 5 lembar. Pada suatu hari Amir mendapatkan 3 lembar dan diketahui hari itu tidak ada yang mendapatkan uang jajan lebih banyak dari dua yang lainnya bila dijumlahkan. Pernyataan manakah yang benar di bawah ini pada hari itu: (i) Dodo mungkin hanya mendapatkan satu lembar ribuan. (ii) Jika diketahui Dodo mendapat empat lembar ribuan, maka Budi tidak mungkin mendapat satu lembar ribuan. (iii) Tidak mungkin ada anak yang mendapat tepat lima lembar ribuan. A. B. C. D. E. (i) dan (ii) benar. (i) dan (iii) benar. (ii) dan (iii) benar. (i), (ii), dan (iii) benar. Hanya satu pernyataan yang benar. 13. Pak Guru Umar menerima kertas hasil dari fotocopy menggunakan mesin yang agak rusak dan bertuliskan “541 .. 43 .. 157 = ??5”. Seharusnya tanda “..” di ruas kiri adalah lambang penjumlahan (“+”) atau pengurangan (“-“) dan tanda “?” di ruas kanan adalah berisi masingmasing satu dijit bilangan yang mungkin berbeda. Berapakah seharusnya digit pertama dari bilangan yang ada di ruas kanan? A. B. C. D. E. 3 4 5 6 7 Soal Bidang Informatika Halaman 3 dari 12 14. Jika n adalah sebuah bilangan bulat ganjil, maka: (i) (n – 2)3(n2 + 2) pasti ganjil (ii) (n2 + 4) n pasti genap (iii) n3 – 3n pasti ganjil (iv) 11n4 – (n – 2)2 pasti genap Pernyataan yang benar adalah: A. B. C. D. E. (i) dan (iv) saja. (i) dan (iii) saja. (i), (ii) dan (iii) saja. (ii) dan (iii) saja. (i) dan (ii) saja. 15. A, C, D, E masing-masing bernilai TRUE, sementara B dan F masing-masing bernilai FALSE. Dari kenyataan itu pernyataan mana dari berikut ini yang bernilai FALSE? A. B. C. D. E. ((A and B) or ((C and D) or E)) and F ((A or B) and ((C or D) and E)) or F ((A and B) and ((C or D) or E)) or F (A and B) and ((C and D) and E) and F ((A or B) or (C or D) or E) and F 16. Pak Udin setiap 6 tahun sekali mencat ulang rumahnya, setiap 3 tahun sekali ia mengganti dekorasi ruang tamunya, setiap 7 tahun sekali ia mengganti mobilnya, dan setiap 4 tahun sekali ia merayakan ulang tahunnya. Diketahui bahwa pada tahun 2000 semua kegiatan itu dilakukan bersamaan. Berapa kali dilakukan lebih dari satu kegiatan dalam setahunnya dalam periode antara tahun 2005 dan tahun 2017? A. B. C. D. E. 8 kali 9 kali 10 kali Kurang dari 8 kali Lebih dari 10 kali 17. Terdapat 3 buah bilangan yang berbeda. Jika setiap pasangan daripadanya dijumlahkan menghasilkan 25, 37, dan 40. Beda antara dua bilangan terbesar adalah ? A. B. C. D. E. 3 8 10 12 15 OSP 2009 18. Dari posisi 0 sumbu-x satu demi satu katak robot berlompatan ke kanan (sumbu-x positif). Setiap katak robot melompat dengan jarak tertentu dan sama tapi berbeda lompatannya satu katak dengan katak lainnya. Jarak lompatan katak-katak adalah salah satu dari bilangan bulat antara 2 sampai dengan 25. Di antara posisiposisi bilangan bulat antara 50 dan 60 ada berapa banyak posisi yang pasti tidak diinjak katak-katak itu? A. B. C. D. E. 2 3 5 7 10 19. Jika dari sebuah kotak pada gambar di samping ini, Anda hanya boleh melangkah ke kotak lain yang bersebelahan secara vertikal atau horizontal (tidak boleh diagonal). Kotak bertanda „X‟ tidak boleh dilalui. Berapa banyak jalur berbeda dari kotak A untuk sampai ke kotak Z dengan jumlah langkah minimal? A. B. C. D. E. 12 36 8 28 21 X Z X X A 20. A sedang bertanding catur melawan B. A lebih banyak memenangkan pertandingan daripada B. Jika pertandingan ini dimenangkan oleh B, manakah dari pernyataan berikut yang PALING TIDAK MUNGKIN ? A. A dan B memenangkan pertandingan yang sama banyaknya. B. A lebih banyak memenangkan pertandingan daripada B. C. A dan B sama-sama pernah kalah oleh C. D. B lebih banyak memenangkan pertandingan daripada A . E. C lebih banyak memenangkan pertandingan daripada A dan B. 21. Lima orang A, B, C, D, dan E tinggal di sebuah kampung yang terdiri atas 5 rumah dengan nomor terurut dari kiri ke kanan: 1, 2, 3, 4, dan 5. Masing-masing orang memiliki hobi yang berbeda-beda yaitu: memasak, memancing, membaca buku, olahraga, dan berkebun. Jika diketahui hal-hal sebagai berikut: (i) rumah 2 ditinggali oleh orang yang suka membaca buku. (ii) C tinggal di antara A dan D. (iii) A tidak bersebelahan dengan B dan B tinggal tepat di sebelah kiri E. (iv) C menyukai berkebun dan D tidak suka memancing. (v) Orang yang menyukai berolahraga tidak bersebelahan dengan orang yang senang membaca buku. Hobi B adalah: A. B. C. D. E. 22. Jika diketahui a, b, dan c adalah bilangan bulat, maka yang manakah pernyataan berikut ini yang tidak benar: A. Jika a habis membagi b dan a habis membagi c, maka a habis membagi b+c. B. Jika a habis membagi b, maka bc habis dibagi a untuk semua bilangan bulat c. C. a habis membagi c jika a habis membagi b dan b habis membagi c. D. Jika a habis membagi b dan b habis membagi c maka ab habis membagi c. E. Jika b = ac dan a≠0, maka a habis membagi b untuk semua bilangan bulat c. 23. Tiga orang bersaudara dilahirkan dalam keluarganya dengan selang waktu 2 tahun. Dua tahun yang lalu jika ketiga bilangan umur mereka dikalikan menghasilkan angka setengah dari ketiga bilangan umur mereka dikalikan pada saat ini. Berapakah ketiga bilangan umur mereka dijumlahkan jika tahun lalu? A. B. C. D. E. Soal Bidang Informatika Halaman 4 dari 12 Memasak Memancing Membaca buku Olahraga Berkebun 20 27 32 45 58 OSP 2009 Deskripsi berikut ini untuk menjawab 3 pertanyaan berikutnya (no 24 – 26). Seorang pedagang keliling berkeliling di 5 kota: K, L, M, N dan O. Minimal satu hari ia akan berada di satu kota dan keesokan harinya mungkin ia masih berada di kota yang sama atau berpindah ke kota lainnya. Ia memiliki aturan sbb. Jika sekarang ia berada di K, keesokan harinya ia bias tetap di K atau pindah ke L atau M. Jika sekarang ia berada di L, keesokan harinya ia pindah ke N atau O. Jika sekarang ia berada di M, keesokan harinya ia masih di M atau pindah ke K atau O. Jika sekarang ia berada di N, keesokan harinya ia pindah ke kota L atau kota O. Jika sekarang ia berada di O, keesokan harinya ia pindah ke kota K atau teap di kota O. 24. Jika hari ini ia berada di kota L maka paling cepat berapa hari lagi ia akan berada di kota M? A. B. C. D. E. 1 hari lagi 3 hari lagi 2 hari lagi 5 hari lagi 4 hari lagi 25. Jika sekarang ia berada di kota N, maka berada dimanakah 4 hari yang lalu jika diketahui selama seminggu sebelumnya ia tidak berada di N dan O, dan selalu mengunjungi kota yang berbeda pada setiap harinya? A. B. C. D. E. Pasti di K. Pasti di M. Pasti di L. Antara L atau K. Antara K atau M. 26. Diketahui bahwa hari ini ia berada di kota K dan 7 hari kemudian ia kembali ke kota K. Diketahui pula bahwa sepanjang perjalanannya itu ia hanya kembali ke kota K di hari ke 7 saja dan ia melalui kota N sebanyak dua kali, serta ia selalu mengunjungi kota yang berbeda pada setiap harinya (satu hari di satu kota pasti besoknya berada di kota lain). Pada hari keberapakah ia berada di kota N untuk terakhir kalinya dalam perjalanan itu? A. B. C. D. E. 2 6 4 3 5 Deskripsi berikut ini untuk menjawab 4 pertanyaan berikutnya (no 27 – 30). Berikut ini ada 6 pernyataan: (1) Semua P dan X adalah N. (2) Semua N kecuali P adalah X. (3) Tidak ada P yang merupakan M. (4) Tidak ada R yang merupakan N. (5) Semua M adalah salah satu dari X atau R. (6) Tidak ada Q yang merupakan X. 27. Pernyataan tambahan manakah dari berikut ini yang PASTI benar jika keenam pernyataan di atas benar? (i) Tidak ada R yang merupakan P. (ii) Beberapa dari X juga adalah P. (iii) Beberapa dari X adalah juga M. Soal Bidang Informatika Halaman 5 dari 12 A. B. C. D. E. Hanya (i) Hanya (i) dan (ii) Hanya (i) dan (iii) (i), (ii) dan (iii) Tidak ada satu pun yang benar dari ketiganya. OSP 2009 28. Manakah yang akan PASTI salah berdasar keenam pernyataan di atas? A. Beberapa R adalah X. B. Semua R merupakan M. C. Beberapa X bukanlah M. D. tidak ada Q yang merupakan P. E. Sejumlah Q bukan N, juga bukan R. 29. Dari keenam pernyataan tsb pernyataan manakah yang dapat secara lojik merupakan deduksi dari satu atau lebih pernyataan lainnya? A. B. C. D. E. 30. Jika pernyataan (2) ternyata SALAH, manakah dari berikut ini yang HARUS benar? A. B. C. D. E. Sejumlah P bukanlah N. Sejumlah Q bukanlah X. Sejumlah M bukanlah X atau pun R. Sejumlah N bukanlah P atau pun X. Salah satu dari “Beberapa dari X merupakan P”, atau “beberapa dari N bukanlah P ataupun X” adalah benar, atau keduanya benar. Pernyataan (2) Pernyataan (3) Pernyataan (4) Pernyataan (5) Pernyataan (6) Bagian Algoritmika (30 soal) 31. perhatikan algoritma berikut for a:= 1 to 10 do case (a mod 5) of 0 : z[a] := 3; 1 : z[a] := 1; 2 : z[a] := 4; 3 : z[a] := 2; 4 : z[a] := 0; end; for b:= 10 downto 1 do begin x:= 3*z[b]; z[b]:= a - b; end; for c:= 1 to 10 do if (c mod 2 = 0) then z[c]:= z[c] + 5; for d:= 10 downto 1 do if (z[d] < 0) then z[d] := z[d] * -1; writeln(z[5]); Apakah keluaran yang dihasilkan kode diatas? A. B. C. D. E. Manakah dari pilihan berikut yang akibatnya sama dengan deretan tsb? A. b := b - a; a := b + a; a := b - a; B. a := b + a; a := b - a; b := b - a; C. a := b - a; b := b - a; a := b + a; D. a := b - a; b := b - a; a := b - a; E. a := b + a; b := b + a; a := b + a; 33. Perhatikan algoritma berikut. c := 0; d := 0; while (a>b) do begin a := a - b; c := c + 1; d := d + b; end; writeln(c, „, „,d); Jika nilai a=34, b=11, maka keluaran dari algoritma di atas adalah: A. 3, 33 B. 1, 4 C. 0, 0 D. 6, 23 E. 5, 20 9 7 5 3 1 Soal Bidang Informatika 32. Perhatikan deretan perintah berikut: a := b + a; b := a – b; a := a – b; Halaman 6 dari 12 OSP 2009 34. Perhatikan potongan program berikut for i := 1 to n do begin for j := 1 to n do begin for k := 1 to n do begin writeln('*'); end; end; end; dengan sembarang harga n > 0, keluaran '*' akan dicetak berulang-ulang dalam sejumlah baris yang A. merupakan fungsi kuadrat dari n B. merupakan fungsi linier dari n C. merupakan konstanta D. merupakan fungsi pangkat empat dari n E. merupakan fungsi kubik (pangkat 3) dari n 37. Suatu array X berindeks dari 1 s.d. 10 dan setiap elemennya berisi huruf-huruf berurutan dari 'a' sampai 'j'. Suatu algoritma bekerja pada array X tersebut sbb. for i := 2 to 9 do swap(X[i-1],X[i+1]); //swap: menukarkan kedua isi array tsb for i := 1 to 10 do write(X[i]); Keluaran yang dituliskannya adalah: A. cdefghijab B. ebacdhfgij C. abcdefghij D. jihgfedcba E. fghijabcde 38. Perhatikan algoritma berikut. 35. Perintah “writeln((not A) or (B and C) or (A and (not B) and C) or (A and B));” untuk semua kemungkinan harga boolean A, B, C akan selalu mencetaakan keluaran yang sama dengan: A. writeln(((not (C or (not A))) and (not B)) or (not A)); B. writeln((A and (B or C)) or C or (A and C)); C. writeln((not B) or (not (A and B and (not C)))); D. writeln((not (C or (not A))) and (not B)); E. writeln((A and (B or C)) or C or ((not A) and (not C))); 36. berikut ini struktur if-then-else if (a and not (not c and not b)) or not ((c and b) or not a) then writeln('merah') else writeln('putih'); Agar algoritma itu selalu menuliskan 'merah' maka kondisi yang tepat adalah A. B. C. D. E. a berharga true yang lain tidak penting c berharga true yang lain tidak penting b berharga false yang lain tidak penting b berharga true yang lain tidak penting a dan c keduanya harus true sementara b tidak penting Soal Bidang Informatika Halaman 7 dari 12 for i:=1 to 10 do Tabel[(i*7 mod 10)+1] := (5+i*3) div 4; Berapakah nilai dari Tabel[1] pertama? A. B. C. D. E. 1 3 7 8 10 39. Perhatikan fungsi berikut function f (x, a: integer) : boolean; begin if (x <= a) then if (x = a) then f := true else f := false else f := f (x-a, a); end; Manakah perintah berikut yang berisi pemanggilan-pemanggilan fungsi f diatas yang akan mencetak harga true? A. B. C. D. E. writeln(f(57, 3) and f(62, 7)); writeln(f(53, 7) or f(62, 7)); writeln(f(24, 3) and f(42, 7)); writeln(f(24, 3) and f(47, 2)); writeln(f(43, 2) and f(72, 8)); OSP 2009 40. Perhatikan pseudopascal berikut readln(a); b := 4; while a > 0 do begin b := b + (a mod 10); a := a div 10; end; if ((b mod 3) > 0) or ((b mod 9) > 0) then writeln('Angin bertiup') else writeln('Angin semilir'); Dua buah algoritma berikut untuk menjawab pertanyaan 41 - 42 Procedure satu (a: integer); var i: integer; begin i := abs(a); // fungsi absolute while i < 128 do begin i := i * 2; end; writeln ( i ); end; Berapakah nilai a yang akan menghasilkan keluaran Angin semilir? A. 20 B. 24 C. 21 D. 22 E. 23 Procedure dua (a: integer); var i: integer; begin i := abs(a); // fungsi absolute repeat i := i * 2; until i >= 128; writeln ( i ); end; 41. Bila masing-masing dipanggil dengan perintah “satu(47)” dan “dua(47)” maka yang benar mengenai keluaran keduanya adalah: A. Keduanya mencetak bilangan yang sama. B. “satu(47)” mencetak bilangan yang besarnya dua kali yang dicetak “dua(47)”. C. “satu(47)” mencetak bilangan lebih kecil dari yang dicetak “dua(47)”. D. Keduanya tidak mencetak apapun juga E. Salah satu atau keduanya mencetak bilangan 0. 42. Pilih pendapat yang benar dari berikut ini: A. Kedua prosedur itu selalu mencetak bilangan yang berbeda untuk semua harga a B. Kedua prosedur itu selalu mencetak bilangan yang sama untuk semua harga a C. Kedua prosedur itu sama-sama tidak dapat bekerja untuk harga a bilangan negatif D. Kedua prosedur tidak akan melakukan perintah “i := i * 2” untuk a = 128 karena kondisi tidak terpenuhi. E. Kedua prosedur itu sama-sama mendapatkan harga (2k .a) terkecil yang lebih besar atau sama dengan dari 128, jika a berharga 1 s.d. 127. Algoritma berikut untuk menjawab pertanyaan 43 - 44 jdata := n; jml := 1; for i := 0 to jdata-1 do begin jml := 3*jml-1; end; writeln(jml); 43. Jika sebelumnya n berharga 3 berapakah yang dicetak oleh potongan algoritma itu. A. 58 B. 42 C. 14 D. 26 E. 15 Soal Bidang Informatika Halaman 8 dari 12 44. Secara umum, dengan n bulat positif apakah harga yang dicetak oleh program itu sebagai fungsi dalam n. A. 5n – 2 B. 3n – 3n-1 – … – 31 – 30 C. 3n-1 + 5 D. n2 + 5 E. 3n-1 + 3n-2 … + 31 + 1 OSP 2009 Algoritma berikut untuk menjawab pertanyaan 45 - 47 procedure ulangulang (var n: integer); begin if n > 0 then begin write(n mod 3); n := n div 3; ulangulang (n); end; end; 45. Pernyatan yang paling tepat mengenai algoritma ulangulang di atas adalah: A. Bilangan basis 3 dari bilangan desimal yang diberikan. B. Deretan bilangan 0, 1, dan 2 yang tidak berpola. C. Urutan dibaca dari belakang sama dengan bilangan berbasis 3 dari n. D. Prosedur yang menghasilkan sepertiga dari bilangan n yang diberikan. E. Prosedur yang menghasilkan bilangan sisa hasil pembagian n oleh 3. 46. Apa yang akan dicetak saat pemanggilan ulangulang (z) dengan z sebelumnya sudah memiliki harga 49? A. B. C. D. E. 0001 1121 0121 1211 1210 47. Jika perintah ulangulang(10000) dijalankan maka akan menghasilkan keluaran yang terdiri atas A. < 7 dijit B. 7 dijit C. 8 dijit D. 9 dijit E. > 9 dijit Algoritma berikut untuk menjawab pertanyaan 48 – 49 function apaini(a: longint; b: longint): longint; var x,y,r: longint; begin x := a; y := b; while (y <> 0) do begin r := x mod y; x := y; y := r; end; apaini := x; end; 48. Jika fungsi tsb dipanggil dengan “writeln(apaini(414, 662));” berapakah yang dicetaknya? A. 1 B. 8 C. 26 D. 414 E. 14 Soal Bidang Informatika Halaman 9 dari 12 49. Jika fungsi tsb dipanggil dengan “writeln(apaini(12345, 54321));” berapakah yang dicetaknya? A. B. C. D. E. 2 3 13 7 11 OSP 2009 Algoritma berikut untuk menjawab pertanyaan 50 - 51 function apaitu(a: integer; b: integer;count: integer): integer; begin count := count + 1; if (a > b) then apaitu := apaitu(b, a,count) else if (a = 0) then apaitu := count else apaitu := apaitu (b mod a, a,count) end; 50. Jika fungsi tsb dipanggil dengan “writeln(apaitu(1001, 1331,9));” berapakah yang dicetaknya? A. B. C. D. E. 2 7 3 11 13 51. Jika fungsi tsb dipanggil dengan “writeln(apaitu(1000, 5040,7));” berapakah yang dicetaknya? A. B. C. D. E. 100 50 40 10 5 Deskripsi dan algoritma berikut untuk menjawab pertanyaan 52 - 54 Algoritma dengan pseudopascal berikut dimaksudkan untuk menjumlahkan bilangan-bilangan dalam suatu array tabeldata hanya pada elemen array bernomor indeks kelipatan 3 (yaitu: 3, 6, 9, dst...) sampai dengan elemen ke 30 dan mencetak hasilnya ke layar. Diketahui, array tabeldata berindeks dari 1 sampai dengan 40 . sum := 0; I := . . . . // inisialisasi I while I < hargabatas do begin sum := sum + tabeldata[I]; . . . . . . . . //increment I end; writeln(sum); 52. Berapakah harga inisialisasi I pada baris bertanda "// inisialisasi i" agar algoritma bekerja seperti yang diharapkan? A. 0 B. 1 C. 2 D. 3 E. 4 53. Perintah apakah yang harus diisikan pada baris bertanda ". . . . . . . // increment I" ? A. I := 3 B. I := I + 1 C. I := I – 1 D. I := I + 2 E. I := I + 3 Soal Bidang Informatika Halaman 10 dari 12 54. Berapakah harga yang diberikan pada variabel hargabatas agar algoritma bekerja seperti yang diharapkan? A. B. C. D. E. 31 25 30 35 40 OSP 2009 Algoritma berikut untuk menjawab pertanyaan 55 - 56 // array X berisi n bilangan dengan index dari 1 s.d. n // fungsi Max(a,b) adalah mencari bilangan terbesar dari a atau b ts := 0; ms := 0; for i := 1 to n do begin ts := Max(0, X[i] + ts); ms := Max(ts, ms); end; writeln(ms); 55. Jika array X berisi harga-harga sebagai berikut: 1, –3, 4, -2, -1, 6 (berarti juga n berharga 6) maka algoritma akan mencetak harga? A. B. C. D. E. -6 4 2 6 7 56. Jika array X berisi harga-harga sebagai berikut: 1, -1, 1, -1, 1, -1, 1 (berarti juga n berharga 7) maka algoritma akan mencetak harga? A. B. C. D. E. -1 4 1 -3 7 Algoritma berikut untuk menjawab pertanyaan 57 - 58 procedure Bingo(t); begin if (t < 2) then writeln('Bingo!') else begin Bingo(t-1); Bingo(t-2) end; end; 57. Berapa kalikah 'Bingo!' dituliskan jika procedure tersebut dipanggil dengan Bingo(6)? A. 6 B. 1 C. 13 D. 20 E. 8 58. Untuk menghasilkan tulisan 'Bingo!' antara 100 200 kali procedure tsb harus dipanggil dengan cara bagaimana? A. Bingo(100) B. Bingo(11) C. Bingo(5) D. Bingo(10) E. Bingo(15) 59. Mana pseudopascal di bawah ini yang jika dijalankan dapat mengurutkan tabel berikut: i 1 2 3 4 5 6 7 8 9 10 data[i] 2 0 1 3 6 7 5 10 0 1 menjadi berisi sebagai berikut (N=10): i 1 2 3 4 5 6 7 8 9 10 data[i] 0 0 1 1 2 3 5 6 7 10 Soal Bidang Informatika Halaman 11 dari 12 OSP 2009 A. for i:=1 to N-1 do for j:=i+1 to N do if data[i]<data[j] then begin data[i]:=data[j]; data[j]:=data[i]; end; D. for i:=1 to N-1 do for j:=i+1 to N do if data[i]<data[j] then begin temp:=data[i]; data[i]:=data[j]; data[j]:=temp; end; B. for i:=1 to N do for j:=N downto i+1 do if data[j-1]>data[j]then begin temp:=data[j]; data[j]:=data[j-1]; data[j-1]:=temp; end; E. for i:=1 to N-1 do for j:=i to N-1 do if data[i]<data[i+1]then begin temp:=data[i]; data[i]:=data[i+1]; data[i+1]:=temp; end; C. for i:=1 to N do for j:=i+1 to N-1 do if data[i]>=data[j] then begin temp:=data[i]; data[i]:=data[j]; data[j]:=temp; end; 60. Mana pseudopascal di bawah ini yang paling tepat jika ingin melakukan pengecekan apakah bil merupakan bilangan 2N (dengan 0<N<30, contohnya : 2, 4, 8, 16, dst.) atau bukan? Jika benar, akan menghasilkan keluaran „Benar‟. Jika salah, akan menghasilkan keluaran „Salah‟. A. readln(bil); duaan:=false; z := 2; for i:=1 to 30 do if (bil = z*2) then duaan:=true; else z := z*2; if duaan then writeln(„Benar‟) else writeln(„Salah‟); C. readln(bil); duaan:=false; while (bil>0) do begin duaan:= (1=(bil mod 2)) or duaan; bil:=bil div 2; end; if duaan then writeln(„Benar‟) else writeln(„Salah‟); B. readln(bil); duaan:=false; while (bil>0) do begin duaan:= (1=(bil mod 2))xor duaan; bil:= bil div 2; end; if duaan then writeln(„Benar‟) else writeln(„Salah‟); Soal Bidang Informatika Halaman 12 dari 12 D. readln(bil); duaan:=false; temp:=1; while (bil>0) do begin temp:=2*temp; if (bil=temp) then duaan:=true; end; if duaan then writeln(„Benar‟) else writeln(„Salah‟); OSP 2009 E. readln(bil); duaan:=false; temp:=1; while ((bil-temp)>0) do begin temp:=temp*2; if (bil=temp) then duaan:=true; end; if duaan then writeln(„Benar‟) else writeln(„Salah‟); Akhir Dari Naskah Soal Soal Bidang Informatika Halaman 13 dari 12 OSP 2009 OLIMPIADE SAINS TINGKAT PROVINSI (OSP) 2010 BIDANG INFORMATIKA Untuk dikerjakan Selama 150 menit (2½ jam) Bagian Informasi Sistem penilaian Nilai benar 1 dan nilai salah 0. Tuliskan jawaban anda sesingkat-singkatnya lembar jawaban di nomor soal yang bersesuaian. Jawaban yang diminta merupakan ANGKA tuliskan juga dengan ANGKA TANPA SATUAN!!! [Penulisan angka 5 dengan N tulisan “lima” tidak diperkenankan.] penjelasan sejumlah notasi yang digunakan dalam naskah soal. N! adalah bilangan faktorial N yang berharga hasil perkalian semua bilangan bulat mulai dari 1 sampai dengan N. Bilangan non-negatif adalah bilangan yang tidak berharga negatif (nol termasuk bilangan nonnegatif). Notasi “A mod B”, dengan A dan B bilangan-bilangan bulat menghasilkan sisa pembagian A dengan B, misalnya 10 mod 3 = 1 karena 10 jika dibagi 3 akan menyisakan 1. Notasi “A div B”, dengan A dan B bilangan-bilangan bulat menghasilkan hasil pembagian A dengan B, dengan hanya mengambil bilangan bulatnya saja misalnya 10 div 3 = 3 karena 10 dibagi 3 berharga 3,333… dan bilangan bulatnya 3. Notasi “abs(A)” dengan A bilangan nyata akan menghasilkan harga positif dari bilangan tersebut. Misalnya abs(-4.5) = 4.5 dan abs(3.2) = 3.2. Notasi “trunc(A)” dengan A bilangan nyata akan menghasilkan bilangan bulatnya saja, misalnya trunc(4.5) = 4, dan trunc(-4.5) = -4. Notasi “sqrt(A)” dengan A bilangan nyata non-negatif maka menghasilkan akar dari A (atau A), misalnya sqrt(9) = 3. Notasi “length(A)” dengan A merupakan string menghasilkan panjang dari string tersebut (termasuk semua karakter di dalamnya), misalnya length(„Viva TOKI 2008‟) = 14. Operasi boolean adalah operasi logika . Untuk membantu mengingatnya berikut ini table opersioperasi yang muncul dalam naskah soal.. A B not A A and B A or B FALSE FALSE TRUE FALSE FALSE FALSE TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE TRUE TRUE TRUE FALSE TRUE TRUE Ekspresi Boolean adalah ekspresi yang dibentuk atas satu atau lebih operasi Boolean dari satu atau lebih variable Boolean. Olimpiade Sains Tingkat Provinsi 2010 Bagian Pertanyaan Analitika/Logika (20 pertanyaan) 1. Udin sudah bisa menjumlah bilangan, tetapi baru saja belajar menulis angka. Udin baru bisa menulis angka 1, 2, 3 dan 4. Tetapi dia tidak menyadari bahwa angka 1 dan 4 berbeda, bagi Udin “angka 4 adalah cara lain untuk menuliskan angka 1.” Selain itu bilangan beberapa dijit seperti 132 adalah bilangan yang bernilai sama dengan hasil penjumlahan dari digit-digit itu sendiri. Contoh : 132 = 1 + 3 + 2 = 6 dan 112314 = 1 + 1 + 2 + 3 + 1 + 1 = 9 (ingat, Udin menganggap 4 adalah 1). Sekarang, Udin ingin tahu berapa banyak cara yang dapat dilakukannya untuk menuliskan sebuah bilangan bernilai tertentu. Misalnya 2, Udin dapat menuliskan 5 bilangan yaitu : 11, 14, 41, 44 dan 2. Ada berapa banyak kemungkinan bilangan beberapa digit yang menurut Udin bernilai 3? 2. Panitia penyelenggara OSN bagian akomodasi mengatur penempatan para delegasi wakil-wakil provinsi di sebuah hotel. Delegasi-delegasi itu masing-masing dengan anggota yang jumlahnya bervariasi, dan rencana kedatangannya pun tidak bersamaan. Para anggota delegasi yang sama diasumsikan datang bersamaan. Karena jumlah kamar di hotel itu agak terbatas, panitia menetapkan suatu pengaturan. Selama kamar-kamar kosong masih tersedia, setiap kamar kosong ditempati oleh dua orang dari delegasi yang sama. Jika jumlahnya ganjil, yang satu orang itu akan ditentukan belakangan setelah yang berdua-berdua selesai ditempatkan. Selama masih ada kamar kosong, yang satu orang itu pun ditempatkan di kamar yang kosong. Saat tidak ada kamar kosong tesisa, setiap orang yang baru datang akan ditempatkan di kamar yang baru ditempati sendirian. Jika ada beberapa pilihan kamar kosong, selalu dipilih kamar dengan nomor yang paling kecil. Jika tidak ada lagi kamar kosong, tapi ada beberapa kamar yang masih satu orang, juga dipilih mulai dari kamar dengan nomor terkecil. Sekarang anda ketahui ada 8 kamar di hotel itu dan ada 8 delegasi yang akan datang yang jumlahnya berturut-turut sesuai dengan urutan waktu kedatangan adalah 3, 1, 3, 2, 1, 3, 2, 1. Jika kamar dinomori dari 1 sampai dengan 8, dan delegasi dinomori sesuai dengan urutan kedatangan dari 1 sampai 8, dengan siapakah anggota delegasi provinsi ke 8 akan sekamar? Deskripsi berikut adalah untuk menjawab pertanyaan no.3 sampai dengan no.7. Terdapat N buah lampu b1, b2, …bn dan tombolnya masing-masing di bawah setiap lampu itu. Tombol itu berperilaku aneh, jika tombol suatu lampu bi ditekan sekali, lampu bi berubah dari mati menjadi terang atau dari terang menjadi mati. Selain itu, ada beberapa lampu yang ikut berubah, mati menjadi terang atau terang menjadi mati. Hubungan lampu-lampu lain yang ikut berubah dinyatakan dengan relasi (i, j). Jika relasi (i, j) itu ada, maka penekanan tombol di bi akan berdampak juga pada lampu di bj selain bi itu sendiri, dan sebaliknya, penekanan tombol di bj berdampak juga pada lampu di bi. 3. Ada 5 buah lampu: b1, b2, b3, b4 ,dan b5, dan terdapat relasi (1, 2), (1, 5), (2, 3), (2, 4), (3, 5), (4, 5). Jika mula-mula seluruh lampu mati, apa yang terjadi dengan b1 dan b2 jika dilakukan penekanan berturut-turut pada tombol-tombol b1, b2, dan b3, dan b5, masing-masing sekali? Jawab dengan memilih: [tuliskan jawaban anda dalam lembar jawaban hanya huruf pilihannya]. (A) keduanya mati, (B) keduanya terang, (C) b1 terang dan b2 mati, atau (D) mati dan b2 terang Bidang Informatika Halaman 2 dari 10 OSP 2010 - TOKI 2011 Olimpiade Sains Tingkat Provinsi 2010 4. Jika mula-mula seluruh lampu mati, tuliskan berapa banyak penekanan sesedikit-sedikitnya untuk membuat semua lampu menjadi terang dilakukan? [tuliskan hanya anga atau jika tidak ada sebutkan “TIDAK ADA”). 5. Jika ditambahkan relasi (2, 4) dengan pertanyaan yang sama dengan no 4, bagaimana jawaban anda sekarang? 6. Seperti pada pertanyaan no. 5 yaitu adanya relasi tambahan (2, 4), kecuali hanya satu yang terang yaitu b2, tuliskan jumlah penekanan minimal (sesedikit mungkin) untuk membuat semua terang? 7. Untuk 8 lampu dengan relasi-relasi: (5, 8), (1, 5), (8, 6), (1, 2), (7, 3), ( 8, 3), (6, 7), (2, 6), (7, 5),(5, 4),(4, 2),(3, 4). Semula semua mati, berapa penekanan yang dilakukan sesedikitsedikitnya agar semua lampu menjadi terang? Deskripsi berikut adalah untuk menjawab pertanyaan no.0 sampai dengan no.10. A dan B melakukan permainan batu. Terdapat N buah tumpukan batu. Di bagian bawah tumpukan terdapat kertas bertuliskan suatu bilangan bulat positif menyatakan nilai tumpukan. Setiap pemain bergantian mengambil satu batu. Setiap pemain yang mengambil batu terakhir dari suatu tumpukan akan mendapatkan skor sebesar nilai tumpukan ybs. Di awal permainan, jumlah batu setiap susunan diketahui, dan nilai-nilai tumpukannya juga diketahui. 8. Berikut ini ada 4 tumpukan seperti pada table di bawah ini. A hendak melakukan langkah pertama kalinya. Dengan asumsi B adalah pemain yang tidak pernah melakukan kesalahan dalam memilih langkahnya, hitunglah berapa skor akhir maksimum yang dapat ia kumpulkan. No Tumpukan 1 2 3 4 Nilai Tumpukan 5 4 15 457 Jumlah Batu pada tumpukan 2 3 1 5 9. Berikut ini ada 8 tumpukan. A hendak melakukan langkah pertama kalinya. Dengan asumsi B adalah pemain yang tidak pernah melakukan kesalahan dalam memilih langkahnya, hitunglah berapa skor akhir maksimum yang dapat ia kumpulkan. No Tumpukan 1 2 3 4 5 6 7 8 Nilai Tumpukan 5 4 15 457 345 13 235 346 Jumlah Batu pada tumpukan 2 3 1 4 5 1 3 2 10. Mengacu pada table di pertanyaan no. 0, seandainya aturan diubah: seorang pemain dapat mengambil 1 atau 2 batu pada setiap gilirannya dan A akan jalan pertama kali, siapakah yang akan mendapatkan nilai tumpukan ke empat? Bidang Informatika Halaman 3 dari 10 OSP 2010 - TOKI 2011 Olimpiade Sains Tingkat Provinsi 2010 Deskripsi berikut adalah untuk menjawab pertanyaan no.11 sampai dengan no.12. Suatu papan catur N x N setiapnya berisi bilangan nonnegatif. Di awal suatu bidak berada kotak (1, 1) atau yang di pojok kiri atas. Berikutnya secara berulang bidak dapat dipindahkan (1) horizontal ke kanan, atau (2) vertikal ke bawah sekian kotak sebanyak dengan bilangan pada kotak terakhir bidak itu berada, kecuali kalau membawa bidak keluar dari papan. Tujuan akhir adalah kotak (N, N) atau yang pojok kanan bawah. Bila bilangan terakhir adalah 0 dan bukan di pojok maka bidak berhenti (tidak dapat melanjutkan langkah kecuali kalau sudah mencapai tujuan). 11. Untuk papan catur berukuran 4x4 berikut ini temukanlah ada berapa lintasan langkah-langkah yang berbeda untuk membawa bidak dari posisi awal (kotak (1, 1)) ke tujuan (kotak (4,4)). Posisi awal 2 1 1 3 3 2 2 1 3 1 3 1 1 3 1 0 Tujuan 12. Untuk papan catur berukuran 4x4 berikut ini temukanlah ada berapa lintasan langkah-langkah yang berbeda untuk membawa bidak dari posisi awal (kotak (1, 1)) ke tujuan (kotak (10, 10)). Posisi awal 3 1 1 3 2 1 2 2 1 2 1 1 2 1 2 3 1 3 1 2 1 1 1 1 2 1 2 3 2 1 1 3 2 1 3 1 3 1 1 2 3 2 3 3 3 1 3 2 2 2 3 3 2 1 3 3 1 1 1 1 1 2 2 2 2 1 3 2 3 1 1 1 3 1 1 2 1 3 1 3 3 2 3 3 2 3 3 3 3 2 3 1 3 1 2 2 2 2 3 0 Tujuan Deskripsi berikut adalah untuk menjawab pertanyaan no.13 sampai dengan no.15. Pak Umar menaruh barang berharganya di sebuah brankas (lemari besi) dengan kunci kombinasi 7 digit setiap digit adalah bilangan 0 sampai dengan 9. 13. Suatu ketika Pak Umar mengatur kombinasinya sedemikian rupa sehingga tidak ada digit yang digunakan berulang (setiap digit maksimum satu kali). Suatu ketika ia lupa bilangan kombinasi tersebut dan meminta anda untuk mencoba-coba berbagai kemungkinan. Ada berapa kemungkinan kombinasi yang mungkin anda harus coba? 14. Supaya tidak mudah kelupaan lagi ia men-set 3 digit berharga 0 (tidak tahu digit yang mana!) dan lainnya seperti sebelumnya maksimum hanya muncul 1 kali dalam kode (kecuali yang 0 tsb). Anda berancang-ancang kalau suatu ketika Pak Umar lupa kembali maka anda berhitung ada berapa kemungkinan kombinasi yang nanti harus dicoba. Bidang Informatika Halaman 4 dari 10 OSP 2010 - TOKI 2011 Olimpiade Sains Tingkat Provinsi 2010 15. Supaya semakin lebih mudah untuk diingatnya, maklum makin hari tambah pelupa saja, Pak Umar mensetnya kembali sedemikian rupa sehingga bilangan-bilangan itu tidak ada yang sama dan meningkat harganya dari kiri ke kanan. Ada berapa kemungkinan kombinasi? Deskripsi berikut adalah untuk menjawab pertanyaan no.16 sampai dengan no.17. Dalam satu keluarga tedapat 8 bersaudara.kandung mereka adalah S, T, U V, W, X, Y dan Z. Urutan nama ini tidak berarti menunjukkan urutan umur, yang diketahui, orang-tua mereka melahirkan anak-anak itu dengan perbedaan hanya 1 tahun berturut-turut. Diketahui juga bahwa: Umur W lebih tua 4 tahun dari Z dan 3 tahun lebih muda dari X Sedangkan S lebih tua dari T, dan lebih muda dari X Umur U adalah umur rata-rata dari umur V dan X 16. Jika yang paling muda diketahui berumur 8, berapakah umur W ? 17. Jika V lebih muda dari W, manakah urutan yang paling mungkin dari pilihan di bawah ini jika diurutkan mulai dari yang tertua hingga yang termuda? (di lembar jawaban, anda hanya menuliskan huruf pilihannya ) (A) X, S, U, W, V, T, Y, Z (B) X, S, T, W, V, U, Y, Z (C) Z, S, T, W, U, V, Y, X (D) X, T, S, V, W, U, Z, Y (E) X, U, S, T, W, V, Y, Z Deskripsi berikut adalah untuk menjawab pertanyaan no.18 sampai dengan no. 20. Dalam suatu acara jamuan makan malam yang diikuti oleh delapan orang (enam tamu ditambah tuan rumah dan nyonya rumah), mereka duduk di sekeliling meja memanjang. Para tamu, masing-masing tiga orang duduk di sisi-sisi meja. Tuan rumah duduk di salah satu ujung meja dan nyonya 18. Dari informasi di atas satu orang lagi yaitu Eko, periksalah apakah ia: I. tuan rumah II. duduk di sebelah kanan Diana III. duduk di seberang Cindy Berapa banyak dari ketiga pernyatan itu mana yang benar? (Jawab dengan menuliskan hanya angka-angka romawi dari pernyataan yang anda anggap benar, jika tidak ada yang benar jawab dengan “TIDAK ADA”). Bidang Informatika Halaman 5 dari 10 OSP 2010 - TOKI 2011 Olimpiade Sains Tingkat Provinsi 2010 19. Jika diketahui bahwa setiap orang duduk berseberangan dengan suami atau isterinya, mana di antara yang berikut ini yang pasti adalah pasangan suami isteri ? (tuliskan jawaban anda di lembar jawaban hanya huruf pilihan yang bersangkutan). (A) Gunawan dan Helena (B) Brigitta dan Firman (C) Cindy dan Firman (D) Gunawan dan Brigitta (E) Eko dan Helena 20. Di antara Ali, Brigitta, Cindy, Diana dan Eko, siapa dari mereka yang tidak duduk berdampingan dengan orang yang jenis kelaminnya sama dengannya? Bagian Pertanyaan Algoritmika (20 pertanyaan) 21. Berikut ini ada dua potong algoritma pseupascal. // pertama readln(x); repeat writeln(x); x := x + 1; Until x > 10; //kedua readln(x); while x <= 10 do begin writeln(x); x := x + 1; end; Apakah kedua potong algoritma itu berperilaku sama?Jika jawaban anda tidak, maka apa yang harus diharus dilakukan? Jawablah dengan memilih salah satu dari pilihan berikut dan menuliskan huruf pilihannya di lembar jawaban: (A) sama, tidak perlu diapa-apakan lagi. (B) tidak, pindahkan “readln(x)” ke dalam loop-while (sebelum “writeln(x)”). (C) tidak, tambahkan “writeln(x)” setelah “readln(x)” dan sebelum loop-while. (D) tidak, tambahkan “if x > 10 then writeln(x);” setelah “readln(x)” (E) tidak, tambahkan “if x >= 10 then writeln(x);” setelah “readln(x)” (F) ttidak, tapi tidak ada yang bisa dilakukan karena memang loop-repeat tidak bisa digantikan loop-while 22. Perhatikan potongan algoritma berikut. for i := 1 to n do for j := 1 to n do XX(i,j); Misalnya XX(i,j) dijalankan dengan harga berapapun bersifat konstan, dan potongan algoritma itu dengan harga n = 100, diperlukan waktu rata-rata 1 detik kira-kira berapa detik potongan algoritma ini dijalankan untuk nilai n = 2000? 23. Perhatikan potongan algoritma berikut. Bidang Informatika Halaman 6 dari 10 OSP 2010 - TOKI 2011 Olimpiade Sains Tingkat Provinsi 2010 i := 1; while i <= n do begin j := 1; while j <= n do begin writeln('*'); J := j * 10 end; i := i * 2; end; Berapa kali karakter „*‟ dituliskan untuk n = 1000? 24. Mengacu pada potongan algoritma di pertanyaan no 23, jika n adalah suatu harga N yang cukup besar maka jumlah karakter „*‟ yang dituliskan proporsional dengan fungsi mana dari pilihan berikut ini? Jawablah dengan memilih dari pilihan ini lalu tuliskan huruf dari pilihan itu pada lembar jawaban. (A) N (B) N2 (C) log N (D) N log N (E) (F) Tidak ada pilihan yang sesuai. 25. Perhatikan potongan algoritma berikut funtion Z(l: begin if l < r z := else z := end; integer; r: integer); then z(l, ((l+r) div 2) - 1) + z(((l+r) div 2) + 1, r) + 1 1; Berapakah yang akan dicetak pada pemanggilan fungsi Z(1, 10)? Berikut ini adalah suatu algoritma dalam pseudopascal untuk menjawab pertanyaan no. 26 s.d. no.29. Bidang Informatika Halaman 7 dari 10 OSP 2010 - TOKI 2011 Olimpiade Sains Tingkat Provinsi 2010 Tujuan dari algoritma ini adalah mencetak deret bilangan: 1, 2, 5, 10, 17, 26, 37, dan seterusnya selama hingga pertama kali mencetak angka yang > 1000. i := 1; j := 1; while (i <= 1000) do begin writeln(i); ............ // perintah yang hilang j := j + 2; end; writeln(i); 26. Agar algoritma bekerja sesuai dengan yang diharapkan, perintah apakah yang harus dituliskan di bagian . .” ............ // perintah yang hilang”. 27. Bila pada ekspresi pemeriksaan kondisi loop-while (perintah “while (i <= 1000) do”) variable i diganti dengan pemeriksaan variabel j menjadi “while (j <= M) do” berapakah harga yang terkecil yang mungkin untuk menggantikan M agar algoritma bekerja secara identik? 28. Bila angka 1000 pada ekspresi pemeriksaan kondisi loop-while (perintah “while (i <= 1000) do”) diganti dengan angka 10000, berapakah angka yang akan dicetak oleh perintah “writeln(i)” pada baris terakhir? 29. Bila angka yang terakhir dicetak diharapkan adalah angka terbesar yang lebih kecil dari 500, maka angka ke berapakah itu dalam deret yang dicetak (catatan: yang pertama adalah 1, kedua adalah 2, dst)? Berikut ini adalah suatu algoritma dalam pseudopascal untuk menjawab pertanyaan no. 30 s.d. no.33. function hitung(a: integer): integer; begin if (a < 0) then begin write('-'); hitung(-a); end else if (a > 1) then begin tmp := hitung(a/2); write(a mod 2) end else writeln(a); end; 30. Apa yang akan dicetakkan pada pemanggilan “hitung(100)”? 31. Apa yang akan dicetakkan pada pemanggilan “hitung(-150)”? Bidang Informatika Halaman 8 dari 10 OSP 2010 - TOKI 2011 Olimpiade Sains Tingkat Provinsi 2010 32. Pada pemanggilan “hitung(1000)” berapa kali perintah “write(a mod 2)” akan dijalankan? 33. Untuk pemanggilan “hitung(M)” menghasilkan keluaran berupa bilangan berdigit 8 berapa bilangan terkecil M yang mungkin? Berikut ini adalah suatu algoritma dalam pseudopascal untuk menjawab pertanyaan no. 34 sampai dengan no.37. var D:array[0..6] of char = ('A','B','C','D','E','F','G'); // procedure untuk menukarkan isi array D[a] dan D[b] procedure swap(a: integer; b: integer); var tmp: char; begin ...... // perintah-perintah untuk menukarkan end; // procedure untuk mencetak isi array dalam satu baris. procedure printarray; var i: integer; begin ........ // perintah-perintah untuk mencetak end; procedure ZZ(m: integer); var i: integer; begin if (m <= 0) then printarray else begin ZZ(m-1); for i := m-2 downto 0 do begin swap(i,m-1); ZZ(m-1); swap(i,m-1); end; end; end; 34. Jika swap(a,b) dimaksudkan untuk menukarkan isi array D[a] dengan D[b], tuliskan perintahperintah yang seharusnya ada di bagian “. . . . . . . . .” di dalam procedure swap tersebut. 35. Pada pemanggilan ZZ(3), berapa kali procedure printarray akan dipanggil? 36. Misalkan ZZ(8) dijalankan di suatu computer selama 1 detik, kira-kira berapa lama ZZ(10) dijalankan? Bidang Informatika Halaman 9 dari 10 OSP 2010 - TOKI 2011 Olimpiade Sains Tingkat Provinsi 2010 37. Sebutkan SATU KATA saja yang menunjukkan proses apa yang dilakukan pseudocode ini pada data dalam array ? Berikut ini adalah suatu algoritma dalam pseudopascal untuk menjawab pertanyaan no. 38 s.d.no.40. procedure cek(a: Boolean; b:Boolean; c: Boolean; d:Boolean); begin write(a,' ',b,' ',c,' ',d,' '); if ((a and not b) or c ) and not ((c and b) or (d and not a)) then writeln('kasus 1') else if ((not c and b) or (a and b and not c and d)) then writeln('kasus 2') else if ((not a and not b and (c or d)) and (c and d)) then writeln('kasus 3') else writeln('kasus 4'); end; 38. Dengan suatu kombinasi harga a, b, c, d, prosedur mencetak “kasus 3”, dengan kombinasi yang sama perintah “writeln(a and b, ' - ',c and d)” akan mencetak dua harga boolean apakah? 39. Dengan suatu kombinasi harga a, b, c, d, prosedur mencetak “kasus 1”, dan diketahui a berharga true. dengan kombinasi yang sama perintah “writeln(a and not b, , ' - ',not (c and d))” akan mencetak dua harga boolean apakah? 40. Bila (b and c) berharga true, maka keluaran yang dicetak adalah? Akhir Berkas Soal Selamat Mengerjakan, semoga sukses Bidang Informatika Halaman 10 dari 10 OSP 2010 - TOKI 2011 Olimpiade Sains Tingkat Provinsi 2011 OLIMPIADE SAINS TINGKAT PROVINSI (OSP) 2011 BIDANG INFORMATIKA 40 Soal untuk dikerjakan Selama 150 menit (2½ jam) Peserta hanya dibolehkan membawa tanda pengenal, alat tulis dan penghapus saat memasuki ruang ujian. Bagian Informasi Sistem penilaian Nilai benar 1 dan nilai salah 0. Tuliskan jawaban anda sesingkat-singkatnya pada lembar jawaban di nomor soal yang bersesuaian. Jika jawaban yang diminta merupakan ANGKA tuliskan dengan ANGKA TANPA SATUAN [Contoh: penulisan angka 5 dengan tulisan “lima” tidak diperkenankan.] Penjelasan sejumlah notasi yang digunakan dalam naskah soal. N! adalah bilangan faktorial N yang berharga hasil perkalian semua bilangan bulat mulai dari 1 sampai dengan N. Bilangan non-negatif adalah bilangan yang tidak berharga negatif (nol termasuk bilangan nonnegatif). Notasi “A mod B”, dengan A dan B bilangan-bilangan bulat menghasilkan sisa pembagian A dengan B, misalnya 10 mod 3 = 1 karena 10 jika dibagi 3 akan menyisakan 1. Notasi “A div B”, dengan A dan B bilangan-bilangan bulat menghasilkan hasil pembagian A dengan B, dengan hanya mengambil bilangan bulatnya saja misalnya 10 div 3 = 3, karena 10 dibagi 3 berharga 3,333… dan bilangan bulatnya 3. Contoh lain, untuk 10 div 4, hasilnya adalah 2, karena mengambil bilangan bulat dari 2,5. Notasi “abs(A)” dengan A bilangan nyata akan menghasilkan harga positif dari A tersebut. Misalnya abs(-4.5) = 4.5 dan abs(3.2) = 3.2. Notasi “trunc(A)” dengan A bilangan nyata akan menghasilkan bilangan bulatnya saja dengan membuang bagian pecahan, misalnya trunc(4.5) = 4, dan trunc(-4.5) = -4. Notasi “sqrt(A)” dengan A bilangan nyata non-negatif maka menghasilkan akar dari A (atau A), misalnya sqrt(9) = 3. Notasi “length(A)” dengan A adalah string menghasilkan panjang dari string tersebut (termasuk semua karakter di dalamnya), misalnya length(‘Viva TOKI 2012’) = 14. Operasi boolean adalah operasi logika. Berikut ini tabel hasil operasi boolean (not, and, or) yang muncul dalam naskah soal. A B not A A and B A or B FALSE FALSE TRUE FALSE FALSE FALSE TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE TRUE TRUE TRUE FALSE TRUE TRUE Ekspresi Boolean adalah ekspresi yang dibentuk atas satu atau lebih operasi Boolean dari satu atau lebih variable Boolean. Bidang Informatika Halaman 1 dari 10 OSP 2011 Olimpiade Sains Tingkat Provinsi 2011 Bagian Pertanyaan Analitika/Logika (20 pertanyaan) 1. Jika a, b, c, d dan e adalah bilangan-bilangan cacah (0,1,2, ...) dan diketahui pula a+b+c+d+e=15, berapakah banyaknya kemungkinan nilai-nilai kelima bilangan tersebut dapat dibuat jika a+b harus sama dengan 5 dan setiap bilangan boleh digunakan lebih dari satu kali? Tuliskan jawabannya dalam bentuk angka. Jawab: ........ 2. Dalam suatu deret bilangan bulat {xi, i > 0}, xi+1 = 2 xi. (bilangan berikutnya = dua kali bilangan sebelumnya). Jika jumlah sebelas bilangan pertama berurutan adalah 14329 maka bilangan kelimabelasnya adalah ........ 3. Sejumlah biji catur hendak ditempatkan pada papan catur dengan syarat, tidak ada biji catur pada baris (jalur horisontal) yang sama, tidak ada biji catur pada kolom (jalur vertikal) yang sama, dan tidak ada biji catur pada kedua diagonalnya. Ukuran papan catur 8 baris 8 kolom. Berapa jumlah biji catur paling banyak yang bisa ditempatkan? (untuk persoalan ini tidak dipedulikan jenis dan warna biji caturnya) Jawab: ........ Deskripsi persoalan Untuk soal 4 s/d 5: Tiga orang dewasa Roni(pria), Susi(wanita), dan Vina(wanita) bersama dengan lima anak-anak Fredi(pria), Heru(pria), Jono(pria), Lisa(wanita) dan Marta(wanita) akan pergi berdarmawisata ke Kebun Binatang dengan menggunakan sebuah kendaraan minibus. Minibus tersebut memiliki satu tempat di sebelah pengemudi, dan dua buah bangku panjang di belakang yang masing-masing terdiri dari 3 tempat duduk, sehingga total terdapat delapan tempat duduk di dalam minibus tersebut, termasuk pengemudi. Setiap peserta wisata harus duduk sendiri, masing-masing di sebuah kursi yang ada dan susunan tempat duduk harus disesuaikan dengan beberapa ketentuan sebagai berikut: Pada masing-masing bangku harus terdapat satu orang dewasa yang duduk Salah satu di antara Roni dan Susi harus duduk sebagai pengemudi Jono harus duduk bersebelahan dengan Marta 4. Jika Fredi duduk bersebelahan dengan Vina, siapakah penumpang pria yang duduk di paling depan? Jawab: ....... 5. Jika Susi duduk di salah satu bangku dan Fredi duduk di bangku lainnya, siapakah dua orang yang sebangku dengan Susi? Jawab: ....... , ....... Deskripsi persoalan Untuk soal 6 s/d 10: Enam orang bernama A, B, C, D, E, F melakukan perjalanan bersama dalam satu kendaraan. Mereka masing-masing berasal dari negara yang berlainan. Negara-negara itu adalah Indonesia, Malaysia, Singapura, Thailand, Laos, dan Myanmar. Ada 2 orang untuk tiap profesi yang sama dan tiap orang berprofesi tunggal (tidak ada yang memiliki profesi lebih dari satu). Selain itu diketahui juga fakta-fakta berikut. A yang berasal dari Singapura dan pria yang berasal dari negara Indonesia, keduanya adalah dokter E dan wanita yang dari negara Malaysia adalah guru C dan orang yang dari Singapura adalah insinyur B dan F dulu pernah bekerja di luar Asia, tapi orang yang dari Singapura tidak pernah bekerja di luar Asia Orang yang dari Laos lebih tua dari A Orang yang dari Myanmar lebih tua dari C Di kota X, B dan pria dari Indonesia turun untuk tidak meneruskan perjalanan Berikutnya, di kota Y, C dan pria dari negara Laos juga turun untuk tidak meneruskan perjalanan 6. Yang dapat diketahui jenis kelaminnya perempuan dari statemen di atas adalah ........ Bidang Informatika Halaman 2 dari 10 OSP 2011 Olimpiade Sains Tingkat Provinsi 2011 7. Seorang dokter yang dipastikan pernah bekerja di luar Asia menurut fakta-fakta tersebut adalah ........ 8. Orang yang dipastikan lebih tua dari A menurut fakta-fakta tersebut bekerja sebagai ........ 9. Dari manakah asal negara C? Jawab: ........ 10. Setelah melewati kota Y, apa sajakah profesi dari orang yang masih di dalam kendaraan? Jawab: ........ Deskripsi persoalan Untuk soal 11 s/d 13: Di suatu pertemuan ada 4 orang pria dewasa, 4 wanita dewasa, dan 4 anak-anak. Keempat pria dewasa itu bernama: Santo, Markam, Gunawan, dan Saiful. Keempat wanita dewasa itu bernama Ria, Gina, Dewi, dan Hesti. Keempat anak itu bernama Hadi, Putra, Bobby dan Soleh. Sebenarnya mereka berasal dari 4 keluarga yang setiap keluarga terdiri dari seorang ayah, seorang ibu dan satu orang orang anak, namun tidak diketahui yang mana yang menjadi ayah dan mana yang menjadi ibu dan mana yang menjadi anak dari masing-masing keluarga itu. Kecuali, beberapa hal diketahui sebagai berikut: Ibu Ria adalah ibu dari Soleh. Pak Santo adalah ayah dari Hadi. Pak Saiful adalah suami dari Ibu Dewi, tapi bukan ayah dari Bobby. Pak Gunawan adalah suami Ibu Hesti. 11. Putra adalah anak dari Pak ........ 12. Anak dari Pak Gunawan adalah ........ 13. Jika pernyataan (1) di atas dihilangkan, periksalah apakah masih bisa disimpulkan bahwa I. Ibu Ria kemungkinannya bersuamikan Pak Markam atau Pak Santo II. Soleh kemungkinannya anak dari Pak Markam atau Pak Santo III. Ibu Dewi kemungkinannya adalah ibu dari Soleh atau Putra (tuliskan jawaban anda di lembar jawaban hanya huruf pilihan yang bersangkutan). (A) Hanya I yang benar (B) Hanya II yang benar (C) Hanya III yang benar (D) Hanya I dan III yang benar (E) Ketiganya benar Deskripsi persoalan Untuk soal 14 s/d 16: Di sebuah bandara internasional di negara antah berantah, pengelola bandara tersebut menyediakan bis yang berjalan keliling dari terminal A, terminal B dan terminal Parkir. Bis tersebut berhenti secara berurutan di 4 titik di terminal A yaitu terminal A1, terminal A2, terminal A3, terminal A4 yang melayani penerbangan-penerbangan dalam negeri. Kemudian bis tersebut secara berurutan berhenti di 3 titik terminal B yaitu terminal B1, terminal B2 dan terminal B3 yang melayani penerbanganpenerbangan internasional. Dari terminal B 3 bis tersebut menuju terminal Parkir untuk berhenti sejenak, dan kemudian menuju kembali ke terminal A1 dan seterusnya berulang-ulang. Di airport tersebut juga disediakan layanan dua buah kereta listrik, salah satunya hanya berjalan dari terminal A3 ke terminal parkir pulang pergi, dan kereta lainnya hanya berjalan dari terminal B2 ke terminal parkir pulang pergi. Alat transportasi tersebut merupakan layanan dari pihak pengelola bandara, dan tidak ada alat transportasi lain di lingkungan bandara tersebut yang dapat dipergunakan. Semua transportasi tersebut berjalan terus menerus selama 24 jam dan tidak dikenakan biaya bagi siapapun yang ingin memanfaatkannya. Bidang Informatika Halaman 3 dari 10 OSP 2011 Olimpiade Sains Tingkat Provinsi 2011 14. Untuk dapat mencapai terminal A4 dari terminal Parkir dengan hanya menjumpai titik pemberhentian yang paling sedikit, terminal-terminal yang akan dilalui berturut-turut adalah? Jawab: ........ 15. Di manakah tempat pemberhentian kedua bagi seseorang yang pergi dari terminal A2 ke terminal B3 yang melalui jalur paling sedikit? Jawab: ........ 16. Jika semua rute perjalanan berikut ini dibuat dengan kemungkinan titik pemberhentian yang paling sedikit, perjalanan yang perlu memanfaatkan kedua kereta listrik dan bis adalah : (tuliskan jawaban anda di lembar jawaban hanya huruf pilihan yang bersangkutan). (A) Dari A2 ke A3 (B) Dari A4 ke B1 (C) Dari Terminal Parkir ke A2 (D) Dari Terminal Parkir ke A4 (E) Tidak Ada. 17. Jika x = 0.888, y = 0.888 , dan z = (0.888)2, maka urutan x, y dan z dari yang paling kecil ke paling besar adalah ........, ........, ........ 18. Bila z bilangan bulat positif terkecil yang memberikan sisa 5 jika dibagi dengan 13 dan memberikan sisa 3 jika dibagi dengan 18, berapa sisanya jika dibagi dengan 11 ? Jawab: ........ 19. Seorang wanita menerima warisan sebesar 13 dari harta suaminya seorang pengusaha yang meninggal dunia karena kecelakaan pesawat. Tiga orang anaknya juga menerima masing-masing 1 dari sisanya. Jika jumlah yang diterima wanita tersebut dan salah seorang anaknya adalah Rp. 10 3 milyar, berapakah total harta yang ditinggalkan oleh pengusaha tersebut ? Jawab: ........ 20. Ibu Dina sedang mencoba untuk membuka usaha ‘bakery’ di sebuah ruko di perumahan elit di kawasan Cibubur. Dari resep yang ia pelajari, untuk suatu campuran adonan kue diperlukan 2½ cangkir terigu dan 4½ cangkir air. Bila ternyata sisa tepung terigu yang tersisa di lemari tinggal ¾ cangkir, berapa cangkirkah air yang diperlukan ? Jawab: ........ Bidang Informatika Halaman 4 dari 10 OSP 2011 Olimpiade Sains Tingkat Provinsi 2011 Bagian Pertanyaan Algoritmika (20 pertanyaan) Petunjuk: Jika program tidak bisa dicompile, isilah jawaban dengan “compile error” Jika program lulus compile, tapi error saat program berjalan, isilah jawaban dengan “runtime error” Jika program lulus compile, tidak ada error saat program berjalan, tapi eksekusi program tidak pernah berakhir, isilah jawaban dengan “time limit exceeded” Jawab dengan sesingkat mungkin tanpa penjelasan jika algoritma dapat dieksekusi dengan baik dan menghasilkan output sesuai dengan perintah “writeln”. 21. Perhatikan potongan program berikut: var x,y : integer; procedure XYZ(var a,b:integer); var c: integer; begin c := a; a := b; b: = c; x = x+10; end; begin x:=10; y:= 5; XYZ(x,y); writeln(x); end. Berapakah nilai angka yang tampil di output? Jawab : ……. 22. Perhatikan potongan program berikut: for i:=1 to n do for j:= 1 to i do //.... Jika n = 100, maka potongan program tersebut akan berjalan dalam waktu 1 detik. Berapakah lamanya program berjalan jika n=10000? (bulatkan ke bilangan bulat terdekat). Dengan catatan: kode program/ algoritma dalam loop dapat dieksekusi dengan waktu konstan. Jawab : ……. Untuk 23 dan 24 perhatikan potongan program berikut. { ubah adalah fungsi yang menerima masukan integer i dengan rumus: ubah(1) = ‘A’; ubah(2) = ‘B’; ubah(3) = ‘C’, dst. } var kalimat : array[1..10000] of string; hitung : integer; procedure berulang(idx,n: integer; kata:string); var i:integer; begin if (idx = n) then begin hitung := hitung+1; kalimat[hitung] := kata; end else Bidang Informatika Halaman 5 dari 10 OSP 2011 Olimpiade Sains Tingkat Provinsi 2011 begin for i:=1 to 5 do berulang(idx+1,n, kata+ubah(i)); end; end; 23. Jika diberikan program utama ini: begin berulang(0,5,’’); writeln(hitung); end. Apakah output yang tampil di layar? Jawab: ..... 24. Jika diberikan program utama ini: begin berulang(0,5,’’); writeln(kalimat[1],’ ‘,kalimat[10],’ ‘,kalimat[hitung]); end. Apakah output yang tampil di layar? Jawab: ..... 25. Perhatikan potongan program berikut: hasil := 1; for i:=3 to 10 do begin if (i mod 2 <> 0) then begin hasil := hasil*i; hasil := hasil*(-1); end else hasil := hasil div 2; hasil := hasil*(-1); end; writeln(hasil) Apakah output yang tampil di layar? Jawab: ........ Untuk soal 26 dan 27 perhatikan potongan program berikut: 1 2 3 4 5 6 7 8 9 10 hitung:=0; n:=10; for i:=1 to n do if (i mod 2 = 0) then for j:=1 to 10 do if (j mod 2 = 0) then hitung := hitung + j else hitung := hitung + i; writeln(hitung); 26. Apakah output yang tampil di layar? Jawab: ........ 27. Jika kode di baris ke 2 diganti dengan n:=1000 Apakah output yang tampil di layar? Jawab: ........ 28. Perhatikan potongan program berikut: var nilai : array[1..10] of integer = (1,7,9,23,12,6,12,7,8,10); function rata2(n: integer):real; var sum:real; begin i:=1; sum := 0; Bidang Informatika Halaman 6 dari 10 OSP 2011 Olimpiade Sains Tingkat Provinsi 2011 repeat sum := sum+nilai[i]; until (i=n); rata2:=sum/n; end; Berapakah nilai yang dikembalikan jika dilakukan pemanggilan fungsi rata2(10)? Jawab: ........ Untuk soal 29 dan 30 perhatikan potongan program berikut: var lolo: array[0..10] of integer = (1,0,10,3,4,6,-1,14,-10,25,1); procedure tukar(var a,b: integer); var c: integer; begin c:=a; a:=b; b:=c; end; procedure lele(lili,lala: integer); var i,a,e : integer; begin i := lili; a := lala; e := (i+a) div 2; while (i<a) do begin while lolo[i] <= lolo[e] do i:=i+1; while lolo[a] >= lolo[e] do a:=a-1; if (i<a) then begin tukar(lolo[i],lolo[a]); end; i:=i+1; a:=a-1; end; if lili < a then lele(lili,e); if i < lala then lele(e,lala); end; 29. Jika dilakukan pemanggilan lele(0,7), maka di akhir program berapakah nilai lolo[0]+lolo[3]+lolo[7]+lolo[10]? Jawab: ........ 30. Berapakah kompleksitas untuk pemanggilan lele (lili – lala), dengan nilai (lili-lala) = n? (tuliskan jawaban anda di lembar jawaban hanya huruf pilihan yang bersangkutan). A. O(1) E. O(n 2 ) B. O(log n) F. O(n 2 log n) C. O(n) G. O(n!) D. O(n log n) H. O(n n ) Bidang Informatika Halaman 7 dari 10 OSP 2011 Olimpiade Sains Tingkat Provinsi 2011 Untuk soal 31, 32, dan 33 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 var i,j:integer; A: array[0..9,0..10] of integer; qr,qc: array[0..10000] of integer; mr: array[0..3] of integer = (0,1,0,-1); mc: array[0..3] of integer = (1,0,-1,0); area: array[0..9,0..10] of char = ( ('o','l','i','m','p','i','a','d','e','s','a'), ('i','n','s','t','i','n','g','k','a','t','p'), ('r','o','v','i','n','s','i','2','0','1','1'), ('.','i','o','i','2','0','1','1','d','i','a'), ('d','a','k','a','n','d','i','t','h','a','i'), ('l','a','n','d','.','g','o','g','e','t','g'), ('o','l','d','s','i','n','d','o','n','e','s'), ('i','a','.','b','e','p','r','e','p','a','r'), ('e','d','f','o','r','i','o','i','2','0','1'), ('1','.','i','n','d','o','n','e','s','i','a') ); procedure init; var i:integer; j:integer; begin for i:=0 to 9 do for j:=0 to 10 do A[i,j]:= 9999; end; procedure S_B; var i,h,t: integer; begin init; h:=0; t:=0; qr[t] := 2; qc[t] := 1; A[qr[t],qc[t]] := 0; t:=t+1; while (h<t) do begin begin for i:=0 to 3 do if ((0<=qr[h]+mr[i]) and (qr[h]+mr[i]<=9) and (0<=qc[h]+mc[i]) and (qc[h]+mc[i]<=10)) and {soal 33} (area[qr[h]+mr[i],qc[h]+mc[i]] <> 'i') and {soal 33} (A[qr[h]+mr[i],qc[h]+mc[i]] > A[qr[h],qc[h]]) then begin qr[t] := qr[h]+mr[i]; qc[t] := qc[h]+mc[i]; A[qr[t],qc[t]] := A[qr[h],qc[h]]+1; t:=t+1; end; end; h:=h+1; end; end; 31. Setelah procedure S_B dipanggil, berapakah nilai A[0][10]? Jawab: ........ 32. Berapakah nilai maksimum di antara semua nilai yang tersimpan pada matriks A? Jawab: ........ 33. Jika baris 43 dan 44 diganti dengan (area[qr[h]+mr[i],qc[h]+mc[i]] <> ’i’) then Berapakah nilai A[9][0] saat procedure S_B dipanggil? Jawab: ........ Bidang Informatika Halaman 8 dari 10 OSP 2011 Olimpiade Sains Tingkat Provinsi 2011 34. Perhatikan fungsi berikut function coba(a:integer):string; var b : integer; str : string; begin if (a=0) then coba:= '' else begin b := a mod 2; if (b=0) then str:=’0’ else str:=’1’; coba:= coba(a div 2)+str; end; end; nilai yang dikembalikan oleh pemanggilan fungsi coba(155) adalah? Jawab: ........ Untuk soal 35, 36, dan 37 perhatikan potongan program berikut: var mm,r,x,h : integer; larik : array[1..10] of integer; { dengan instruksi sebagai berikut: } function D(y,z:integer):boolean; forward; procedure C(r:integer); forward; procedure B(r:integer); forward; procedure A; forward; procedure main(m: integer); forward; { pemanggilan function / procedure dapat dilakukan dengan benar tanpa memperdulikan urutan penulisan fungsi } function D(y,z:integer):boolean; begin r:=32767; if ((y=0) or (z=0)) then D:= (y=0) else if (r=32767) then D:=D(y+1,z+1); end; procedure C(r:integer); begin x:=larik[r]; if D(x-mm,h-mm) then h:=x; B(r-1); end; procedure B(r:integer); begin if (r<>0) then C(r); end; procedure A; begin B(r); writeln(h); end; procedure main(m: integer); begin mm:=m; h:=-m; r:=10; A; end; Bidang Informatika Halaman 9 dari 10 OSP 2011 Olimpiade Sains Tingkat Provinsi 2011 35. Misalkan variable larik yang merupakan array dan setiap elemennya diisi sehingga bernilai sebagai berikut: 2,3,1,4,9,-1,7,-9,-2,5. Pada program berikut ini, apakah output yang tampil di layar? Jawab: ....... begin main(10); end. 36. Misalkan setiap elemen larik diisi sehingga bernilai sebagai berikut: 12,33,1,49,9,-11,7,-91,-2,53. dengan program utama berikut ini, apakah output yang tampil di layar? Jawab: ....... begin main(10); end. 37. Asumsikan larik adalah array dengan ukuran tak hingga. Tentukan nilai r yang membuat program tidak berhenti dengan benar untuk larik dengan nilai sembarang! Jawab: ........ Perhatikan kode berikut untuk soal 38 dan 39. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Var a: array[1..100] of integer n, jumlah, rata2: integer; begin sum:=0; readln(n); for i:=1 to n do begin readln(a[i]); end; for i:=1 to n do { Soal No. 38: tuliskan kode untuk menghitung jumlah semua elemen array a ..... } { Soal No. 39: tuliskan kode untuk menghitung rata2 nilai elemen array a ..... } end. 38. Tuliskan kode untuk menghitung hasil penjumlahan semua nilai yang disimpan pada array a dan disimpan pada variable jumlah di baris 13. Jawab: ........ 39. Tuliskan kode untuk menghitung hasil nilai rata-rata semua nilai yang ada pada array a dan disimpan pada variable rata2 di baris 16. Jawab: ........ var a: array[0..100] of integer; function maksimum(n: integer): integer; var i: integer; begin { Soal 40: lengkapi kode dengan algoritma untuk menentukan nilai maksimum dari semua nilai yang disimpan pada a[0] s.d. a[N-1], dengan N>0 dan N<101 } end; 40. Lengkapilah fungsi maksimum di atas, agar menghasilkan nilai maksimum dari array A dari indeks 0 sampai ke N-1, N>0 Tuliskan kodenya! Jawab: ................................................................... Akhir Berkas Soal Selamat Mengerjakan, semoga sukses Bidang Informatika Halaman 10 dari 10 OSP 2011 Olimpiade Sains Tingkat Provinsi 2012 BIDANG INFORMATIKA/KOMPUTER 50 Soal untuk dikerjakan Selama 150 menit (2½ jam) Peserta hanya dibolehkan membawa tanda pengenal, alat tulis dan penghapus saat memasuki ruang ujian. Bagian Informasi Model ujian ini adalah isian singkat. Tuliskan jawaban anda sesingkat-singkatnya pada lembar jawaban di kolom nomor soal yang bersesuaian. Jika jawaban yang diminta merupakan ANGKA tuliskan dengan ANGKA TANPA SATUAN [Contoh: penulisan angka 5 dengan tulisan “lima” tidak diperkenankan.] Jawaban BENAR bernilai 1, jawaban SALAH bernilai 0. Jumlah Soal 50, untuk dikerjakan dalam 2½ JAM (atau 150 menit). Notasi algoritma pada bagian algoritmika menggunakan pseudopascal yang pada intinya seperti pascal tetapi tidak serinci pascal karena diutamakan pada konsep logika di dalam algoritma. Halaman-halaman yang berisi pertanyaan ada di halaman no 2 sampai dengan 10. Jika berkas anda tidak lengkap/rusak/cacat/tak terbaca, mintalah kepada panitia untuk penggantian berkas. Peserta DILARANG: 1. menggunakan perangkat komputasi (laptop, kalkulator, komputer) 2. menggunakan alat komunikasi (handphone, pager, PDA, dll) selama mengerjakan ujian ini, 3. menggunakan buku/referensi/catatan selain berkas soal ini, serta 4. bekerja sama dengan atau mencontek hasil pekerjaan peserta lain. Peserta yang melakukan pelanggaran akan dibatalkan dari keiutsertaan ujian dan dinyatakan gugur. Berkas soal BOLEH digunakan untuk coretan tetapi TIDAK BOLEH dilepas dari bundelannya. Jika bundelan lepas secara tidak disengaja, pengawas diharapkan membundelnya kembali atau diganti dengan berkas baru. Berkas soal TIDAK BOLEH dibawa pulang dan panitia setempat harus menghancurkannya atau menyimpannya hingga seluruh propinsi di Indonesia selesai melaksanakan OSP ini. Penjelasan sejumlah notasi yang digunakan dalam naskah soal. N! adalah bilangan faktorial N yang berharga hasil perkalian semua bilangan bulat mulai dari 1 sampai dengan N. Bilangan positif adalah bilangan yang tidak berharga negatif (nol termasuk bilangan positif). Notasi “A mod B”, dengan A dan B bilangan-bilangan bulat menghasilkan sisa pembagian A dengan B, misalnya 10 mod 3 = 1 karena 10 jika dibagi 3 akan menyisakan 1. Notasi “A div B”, dengan A dan B bilangan-bilangan bulat menghasilkan hasil pembagian A dengan B, dengan hanya mengambil bilangan bulatnya saja misalnya 10 div 3 = 3, karena 10 dibagi 3 berharga 3,333… dan bilangan bulatnya 3. Contoh lain, untuk 10 div 4, hasilnya adalah 2, karena mengambil bilangan bulat dari 2,5. Bidang Informatika/Komputer Halaman 1 dari 10 OSP 2012 Olimpiade Sains Tingkat Provinsi 2012 Bagian Pertanyaan Analitika/Logika (25 pertanyaan) 1. Selisih jumlah umur Barnie dan Jecky 6 tahun yang lalu dan jumlah umur Barnie dan Jecky 5 tahun yang akan datang merupakan dua kali dari selisih umur Zeta 6 tahun yang lalu dan 5 tahun yang akan datang. Selisih umur Barnie dan Zeta adalah 31. Jumlah umur Jecky dan Zeta 1 tahun yang lalu adalah 70. Umur Jecky 7 tahun yang lalu merupakan dua kali dari umur Barnie 7 tahun yang lalu. Selain itu, diketahui umur Barinie, Jecky, dan Zeta saat ini adalah bilangan bulat. Berapa jumlah umur Barnie, Jecky, dan Zeta 3 tahun yang lalu? 2. Agar mudah diingat, Pak Dengklek membuat password untuk komputernya dengan mengacak hurufhuruf pada namanya, yaitu ‘D’, ‘E’, ‘N’, ‘G’, ‘K’, ‘L’, ‘E’, dan ‘K’. Suatu ketika ia lupa password komputernya, dan memutuskan untuk mencoba semua kemungkinan pengacakan yang ada tanpa pengulangan. Berapakah waktu yang dibutuhkan untuk mencoba semua kemungkinan pengacakan tersebut, jika sekali mencoba suatu kemungkinan membutuhkan waktu 10 detik? 3. Pak Dengklek memiliki 1000 ekor bebek, yang diberi nomor 1 sampai dengan 1000. Pak Dengklek yang sedang berbaik hati, ingin memberikan Anda sebagian bebek yang dimilikinya. Anda bebas memilih beberapa bebek yang mana saja, asalkan memenuhi satu syarat khusus yang diminta Pak Dengklek: jika Anda memilih bebek bernomor x, Anda tidak boleh memilih bebek bernomor 3x. Misalnya, jika Anda memilih bebek bernomor 5, Anda tidak boleh memilih bebek bernomor 15. Berapa banyak maksimal bebek yang bisa Anda terima dari Pak Dengklek? 4. Pak Dengklek memiliki 1000 buah kartu. Setiap kartu terdiri dari dua sisi yang tampak identik. Pada kedua sisi setiap kartu, Pak Dengklek dapat memilih untuk menuliskan sebuah angka, atau tidak menuliskan apa-apa. Seribu buah kartu tersebut diletakkan oleh Pak Dengklek di atas meja, sehingga Anda dapat melihat bahwa pada sisi yang terbuka, semua kartu telah ditulisi angka yang berbeda, mulai dari 1 hingga 1000. Anda tidak dapat melihat sisi yang tertutup. Pak Dengklek mengatakan bahwa: “Jika pada satu sisi kartu tertulis bilangan ganjil, maka pada sisi lainnya pasti tertulis bilangan yang habis dibagi 3, DAN jika satu sisi sebuah kartu tidak terdapat tulisan apa-apa (kosong), maka pada sisi lainnya pasti tertulis bilangan yang habis dibagi 5”. Berapa minimal kartu yang harus Anda balik untuk mengetahui apakah Pak Dengklek berkata benar atau tidak? 5. Didefinisikan n! = n x (n-1) x (n-2)... x 2. x 1. Berapakah banyaknya digit 0 beruntun di akhir 500! ? 6. Sebuah slot machine memiliki tiga roda undi. Di setiap roda ada 4 simbol, yaitu A, B, C, dan D. Setiap kali pengguna menarik tuas, ketiga roda undi akan berputar dan masing-masing roda berhenti di suatu simbol tertentu. Pengguna akan menang jika ketiga simbol yang ditunjukkan roda undi semuanya sama. Berapakah peluang pengguna untuk menang di slot machine ini? 7. Pak Dengklek sangat sayang dengan bebek-bebeknya. Ia mencatat hari ulang tahun setiap bebekbebeknya (hari, tanggal, dan bulan), sebagai contoh (Rabu, 2, Mei). Pak Dengklek tahu bahwa jika ia memiliki minimal 366 ekor bebek, maka pasti ada dua ekor bebek yang berulang tahun pada tanggal dan bulan yang sama, namun belum tentu harinya sama (asumsikan bahwa setahun selalu memiliki 365 hari). Pak Dengklek bertanya, berapakah jumlah minimal bebek yang harus ia miliki, agar ia yakin bahwa pasti ada 5 bebek yang berulang tahun pada hari, tanggal dan bulan yang sama? Bidang Informatika/Komputer Halaman 2 dari 10 OSP 2012 Olimpiade Sains Tingkat Provinsi 2012 8. Bilangan bulat positif terkecil yang memiliki tepat 6 pembagi (termasuk 1 dan dirinya sendiri) adalah 12. Bilangan bulat positif terkecil yang memiliki tepat 30 pembagi adalah... Berikut ini merupakan deskripsi untuk soal nomor 9 dan 10 Tiga orang sahabat, Ari, Budi, dan Cici terdampar di sebuah pantai bersama seekor kucing. Mereka berusaha mengumpulkan makanan, dan yang berhasil mereka temukan hanyalah ikan-ikan kecil, namun dengan jumlah cukup banyak. Karena kelelahan, mereka memutuskan untuk beristirahat dan membangun tenda. Mereka berencana untuk memasak ikan keesokan harinya bersamasama. Malamnya, ketika semua sedang tertidur, Ari bangun dari tidurnya. Karena ia kuatir pada keesokan harinya teman-temannya akan curang pada saat membagi ikan untuk sarapan, Ari mencoba mengamankan bagiannya. Ia membagi ikan-ikan tersebut ke dalam 3 bagian sama rata. Ternyata tersisa satu ekor ikan. Ari mengambil salah satu dari 3 bagian, dan memberikan sisa satu ekor ikan tadi ke kucingnya, dan kemudian tidur lagi. Tidak disangka, ternyata kedua temannya yang lain mempunyai pikiran untuk melakukan hal yang sama seperti Ari: bangun, membagi ikan (yang tersisa) ke dalam tiga bagian, dan mengambil bagiannya. Pada setiap pembagian, selalu tersisa satu ekor ikan yang kemudian diberikan kepada si kucing. Keesokan paginya, mereka semua terbangun, dan tanpa saling memberitahu apa yang mereka lakukan pada malam harinya, mereka membagi ikan-ikan tersebut untuk bertiga. Sama seperti sebelumnya, pembagian dengan 3 menyisakan satu ekor ikan, yang diberikan kepada si kucing. 9. Berapakah jumlah minimum ikan yang terkumpul mula-mula? 10. Secara berturut-turut, berapakah jumlah ikan yang dimiliki oleh masing-masing Ari, Budi dan Cici pada akhirnya? 11. Dengan menggunakan hanya simbol 0, 1 dan 2, kita ingin membentuk string sedemikian rupa hingga selisih antara satu simbol dengan simbol di sebelahnya tidak lebih dari satu. Sebagai contoh, kita dapat membentuk string 011221 dan 2211010, tetapi tidak boleh membentuk string 102. Berapakah banyaknya string seperti ini yang panjangnya tepat 10 simbol? 12. Beberapa anak berbaris dalam satu barisan. Sang Guru memerintahkan mereka untuk mengubah posisi barisan mereka, dengan aturan: setiap anak boleh memilih untuk tetap di posisinya semula, atau bertukar dengan orang yang berdiri tepat di depan atau tepat di belakangnya (apabila ada dan belum pernah bertukar). Jika ada 3 orang anak yang berbaris, dengan urutan awal A, B, C, maka ada 3 kemungkinan hasil setelah perintah Guru dijalankan, yaitu: tetap, berubah menjadi B,A,C, atau berubah menjadi A,C,B. Berapa kemungkinan hasil yang mungkin apabila ada 15 anak yang berbaris? 13. Anda memiliki sebuah neraca yang dapat digunakan untuk membandingkan bobot dua obyek dan mengetahui mana yang lebih berat. Jika Anda memiliki 128 benda, berapa kali minimal Anda harus menggunakan neraca tersebut untuk menentukan mana benda terberat DAN benda terberat kedua dari 128 benda tadi? 14. Dalam papan catur ukuran 3x3, dua kuda putih berada pada posisi pojok atas (kanan dan kiri), sedangkan kedua kuda hitam berada pada posisi pojok bawah (kanan dan kiri). Diketahui tidak boleh ada dua kuda berada di petak yang sama pada saat apapun. Tentukan, dengan minimal berapa Bidang Informatika/Komputer Halaman 3 dari 10 OSP 2012 Olimpiade Sains Tingkat Provinsi 2012 gerakan menggunakan langkah kuda catur, posisi kuda hitam dan putih saling bertukar (kuda-kuda hitam di pojok atas, kuda-kuda putih di pojok bawah)? (Sebagai keterangan, pada catur, satu langkah kuda dilakukan dengan menggeser kuda satu petak secara horizontal (baik ke kiri maupun ke kanan) dan dua petak secara vertikal (baik ke atas maupun ke bawah), maupun menggeser kuda dua petak secara horizontal dan satu petak secara vertikal). 15. Pak Dengklek memiliki 2 buah takaran air, A dan B, masing-masing volumenya adalah 35 ml dan 48 ml. Jika Pek Dengklek ingin mengambil tepat 22 ml air, maka Pak Dengklek dapat melakukannya dengan menggunakan tiga langkah penakaran, yaitu: takar 2 kali dengan takaran A (2x35=70 ml) lalu kurangkan dengan 1 kali takaran B (70-48=22). Jika Pak Dengklek ingin mengukur tepat 10 ml air, berapakah minimal penakaran yang diperlukan? 16. Pak Dengklek memiliki 80 buah koin emas, semuanya dengan bentuk dan rupa yang sama. Sayangnya, di antara 80 koin tadi, diketahui ada satu koin yang palsu. Pak Dengklek tidak tahu yang mana yang palsu, akan tetapi ia mengetahui bahwa koin yang palsu pasti lebih ringan dari yang asli. Pak Dengklek memiliki sebuah neraca yang bisa ia gunakan untuk membandingkan berat dua buah benda. Pak Dengklek kemudian memilih sebuah strategi yang memastikan banyak penimbangan pada kasus terburuk adalah sesedikit mungkin. Berapakah banyak penimbangan yang Pak Dengklek perlukan pada kasus terburuk apabila ia menggunakan strategi tersebut? Berikut ini merupakan deskripsi untuk soal nomor 17-18 Dalam sebuah pertandingan renang antar RW terdapat 8 orang peserta, mereka adalah A, B, C, D, E, F, G, dan H. Setelah pertandingan dilakukan secara tertutup, Pak Lurah yang merupakan juri mengumumkan hasilnya. Ia tidak mengumumkan urutan peringkat dari 1 sampai 8, (makin kecil peringkat seseorang tentunya semakin baik peringkatnya), tetapi hanya memberikan beberapa fakta mengenai pertandingan, yaitu sebagai berikut: E berada 3 peringkat di bawah B dan 4 peringkat di atas F Peringkat A lebih baik dari D, dan peringkat D lebih baik dari H Selisih peringkat A dan D sama dengan selisih peringkat D dan H Peringkat G lebih baik dari peringkat C 17. Ada berapa konfigurasi urutan peringkat yang mungkin? 18. Jika diketahui peringkat C lebih baik dari E, tuliskanlah urutan peringkat dari 1 sampai dengan 8. Berikut ini merupakan deskripsi untuk soal nomor 19-22 Terdapat 100 titik, dinomori 1 sampai 100. Seekor kelinci bernama Listi berada di titik 1. Listi dapat berpindah lokasi dengan meloncat. Apabila Listi meloncat sejauh X, maka apabila ia sebelumnya berada di titik Y, ia akan sampai di titik Y+X. Tentu saja Listi tidak dapat melakukan loncatan tersebut apabila Y+X lebih besar dari 100. Sebuah cara bagi Listi untuk berpindah dari titik X ke titik Y didefinisikan sebagai urutan panjang loncatan yang ia lakukan. Dengan kata lain, dua cara dianggap berbeda apabila: a) Jumlah loncatan di kedua cara berbeda, atau b) Ada indeks i di mana loncatan ke-i di cara pertama berbeda dengan loncatan ke-i di cara kedua. Bidang Informatika/Komputer Halaman 4 dari 10 OSP 2012 Olimpiade Sains Tingkat Provinsi 2012 19. Apabila Listi hanya dapat melakukan loncatan dengan panjang 7 atau 9, berikan salah satu cara ia dapat mencapai titik 72. Berikan sebagai urutan loncatan yang harus ia lakukan. 20. Apabila Listi hanya dapat melakukan loncatan dengan panjang 7 atau 9, ada berapa cara berbeda yang dapat ia lakukan untuk mencapai titik 72? 21. Apabila Listi dapat melakukan loncatan dengan panjang 1 atau 2 saja, ada berapa cara berbeda yang dapat ia lakukan untuk mencapai titik 12? 22. Apabila Listi hanya dapat melakukan loncatan yang panjangnya adalah angka pangkat 1, 2, 4, 8, 16, 32, dan 64, berikan salah satu cara untuk mencapai titik 100 yang menggunakan jumlah loncatan sesedikit mungkin. 23. Diberikan sebuah barisan bilangan bulat yang mana untuk i > 0, bilangan ke-i pada barisan ini merupakan hasil kali dari (1 x 2 x … x (i-1) x i) dengan bilangan pertama pada barisan ini. Jika jumlah delapan bilangan pertama pada barisan ini adalah 416097, maka bilangan kesepuluhnya adalah ... 24. Jika 4! berarti 4 x 3 x 2 x 1 = 24. Tuliskanlah kedua digit terakhir dari 1! + 2! + 3! + …+ 9999! 25. Jika a, b, c, d dan e adalah bilangan-bilangan cacah (0,1,2, ...) dan diketahui pula a x b x c x d x e = 864, berapakah banyaknya kemungkinan nilai-nilai kelima bilangan tersebut dapat dibuat jika a x b harus sama dengan 12 dan setiap bilangan boleh digunakan lebih dari satu kali? Bidang Informatika/Komputer Halaman 5 dari 10 OSP 2012 Olimpiade Sains Tingkat Provinsi 2012 Bagian Pertanyaan Algoritmika (25 pertanyaan) 26. Diketahui definisi fungsi sebagai berikut. Jika max(a,b) adalah fungsi yang mengembalikan nilai maksimum dari a dan b, berapakah nilai dari F1(4,3)? function F1(i, j : integer) : integer; begin if (i < 0) or (j < 0) then F1 := max(i, j) + 1 else if i = j then F1 := F1(i + 1, j - 1) else F1 := F1(i - 2, j - 1) + F1(i - 1, j - 2); end; 27. Dari definisi fungsi sebagai berikut, berapakah nilai dari F2(6,2)? function F2(n, k : integer) : integer; var i, x : integer; begin x := 1; for i := n downto k + 1 do x := x * i; for i := n - k downto 2 do x := x div i; F2 := x; end; 28. Tentukanlah berapa banyak tanda bintang dihasilkan sebagai output jika fungsi F4(n) dijalankan. (notasikan jawaban anda dalam n) procedure F4(n : integer); begin if n = 1 then write('*') else begin write('*'); F4(n - 1); write('*'); end; end; 29. Dari definisi fungsi berikut, berapa kalikah F5(4) dieksekusi pada pengeksekusian F5(8)? function F5(n : integer) : integer; begin if (n = 1) or (n = 2) then F5 := 1 else F5 := F5(n - 1) + F5(n - 2); end; 30. Gunakan F5 pada soal nomor 29, berapa kalikah F5(n-k) dieksekusi pada pengeksekusian F5(n) (dengan n>k>2, notasikan jawaban anda dalam F5, n dan k)? Bidang Informatika/Komputer Halaman 6 dari 10 OSP 2012 Olimpiade Sains Tingkat Provinsi 2012 31. Jika a dan b memiliki nilai kebenaran yang sama maka outputnya adalah . . . if not((not a and b) or (a and not b)) then writeln('merah') else writeln('putih'); 32. Jika nilai yang mungkin baik untuk a, b, maupun c adalah salah satu bilangan bulat yang berkisar antara {1,2,3,4} berapakah nilai maksimum d yang mungkin? if a > b if b < b := else c := else a := b d := a + then c then a + 2 * c b + 2 * c + c; b + c; Potongan program berikut ini merupakan pseudocode untuk soal nomor 33-34 //inisiasi semua T[..] sebagai true for i := 2 to max do begin if (T[i]) then begin writeln(i); j := i; while (j*i <= max) do begin ... // perintah yang hilang j := j + 1; end; end; end; 33. Agar algoritma tersebut dapat menampilkan semua bilangan prima 2,3,5,7,… dan seterusnya hingga nilai max, perintah apa yang harus dituliskan di bagian “… //perintah yang hilang”? (hint : perintah hanya terdiri dari 1 statement). 34. Mengacu pada potongan algoritma di atas. Bila max bernilai 100, berapa kali perintah writeln(i) dieksekusi? Bidang Informatika/Komputer Halaman 7 dari 10 OSP 2012 Olimpiade Sains Tingkat Provinsi 2012 Potongan program berikut ini merupakan pseudocode untuk soal nomor 35-36 function campur(n : integer) : integer; begin campur := n * n; end; function aduk(x,y,z : integer) : integer; begin if (y = 0) then aduk := 1 else if (y mod 2 = 0) then aduk := campur(aduk(x,y div 2,z)) mod z else aduk := ( (x mod z) * aduk(x,y-1,z) ) mod z; end; var a,b,c : integer; begin readln(a,b,c); writeln(aduk(a,b,c)); end. 35. Jika program dijalankan dan pengguna memasukkan angka 2, 10, dan 10, berapakah angka yang dikeluarkan program? 36. Jika program dijalankan dan pengguna memasukkan angka 4, 40, dan 5, berapakah angka yang dikeluarkan program? Potongan program berikut ini merupakan pseudocode untuk soal nomor 37-39 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: function g(a,b : integer) : integer; begin if (b = 0) then g := // kosong else g := // kosong end; function h(a,b : integer) : integer; begin h := // kosong end; Fungsi g diharapkan akan menghasilkan Faktor Persekutuan Terbesar (FPB) dari dua buah nilai integer a dan b, sedangkan fungsi h diharapkan akan menghasilkan Kelipatan Persekutuan Terkecil (KPK) dari dua buah nilai integer a dan b. 37. Isilah bagian kosong di baris 4 dengan tepat. 38. Isilah bagian kosong di baris 6 dengan tepat. 39. Isilah bagian kosong di baris 11 dengan tepat. Bidang Informatika/Komputer Halaman 8 dari 10 OSP 2012 Olimpiade Sains Tingkat Provinsi 2012 40. Perhatikan potongan program berikut ini: var m,i,a,b,c,d:longint; begin readln(m); a:=1;b:=1;c:=1; for i:=4 to m do begin d:=a+b+c; a:=b; b:=c; c:=d; end; writeln(c); end. Bila user memasukkan input 8, maka berapakah outputnya? Potongan program berikut ini merupakan pseudocode untuk soal nomor 41-42 function xxx(x:longint):longint; begin xxx:=x*x; end; function xyz(x,y:longint):longint; begin if(y = 1)then xyz:=x else if ((y mod 2) = 0) then xyz:=xxx(xyz(x, y div 2)) else xyz:=x*xyz(x,y-1); end; 41. Untuk pemanggilan xyz(2,12) akan menghasilkan nilai berapa? 42. Jika fungsi xyz dipanggil dengan nilai argumen y=100, berapa kalikah fungsi xyz ini akan dieksekusi? Potongan program berikut ini merupakan pseudocode untuk soal nomor 43-44 a:=2; b:=3; for i:=p to q do begin b:=i*(a+b); end; 43. Apabila rumus pada baris ke-5 program di atas diubah menjadi b:=a*(a+b) dan nilai b setelah program dijalankan adalah 108, maka berapa nilai q-p? 44. Apabila diketahui p=3 dan nilai b setelah program dijalankan adalah 350, maka berapa nilai q pada saat inisialisasi? Bidang Informatika/Komputer Halaman 9 dari 10 OSP 2012 Olimpiade Sains Tingkat Provinsi 2012 Potongan program berikut ini merupakan pseudocode untuk soal nomor 45-48 function func(x:integer):integer; var i : integer; b : boolean; begin b:= true; i := 1; while b=true do begin if (x mod i) <> 0 then begin func := i; b:=false; end; inc(i); end; end; 45. Tentukan nilai dari func(4620). 46. Tentukan nilai x positif terkecil di mana func(x) = 11. 47. Tentukan bilangan x positif terkecil ke-11 di mana func(x) = 11. 48. Dengan mengasumsikan tipe integer adalah tipe bilangan bulat yang tidak memiliki batasan, berikan sepuluh nilai x positif terkecil di mana tidak ada angka positif y sehingga func(y) = x. Potongan program berikut ini merupakan pseudocode untuk soal nomor 49-50 var i,j:longint; begin for j:=1 to 15 do for i:=1 to 16-j do if (i mod j=0) then writeln(‘*’); end. 49. Jika program di atas dijalankan, maka banyaknya bintang yang akan ditampilkan ke layar adalah ... 50. Jika ’16-j’ diubah menjadi 16, maka banyaknya bintang yang akan ditampilkan ke layar adalah ... Akhir Berkas Soal Selamat mengerjakan, semoga sukses Bidang Informatika/Komputer Halaman 10 dari 10 OSP 2012 Olimpiade Sains Tingkat Provinsi 2013 BIDANG INFORMATIKA/KOMPUTER – SESI 2 50 Soal untuk dikerjakan Selama 150 menit (2½ jam) Peserta hanya dibolehkan membawa tanda pengenal, alat tulis dan penghapus saat memasuki ruang ujian. Bagian Informasi Model ujian ini adalah isian singkat. Tuliskan jawaban anda sesingkat-singkatnya pada lembar jawaban di kolom nomor soal yang bersesuaian. Jika jawaban yang diminta merupakan ANGKA tuliskan dengan ANGKA TANPA SATUAN [Contoh: penulisan angka 5 dengan tulisan “lima” tidak diperkenankan.] Jawaban BENAR bernilai 1, jawaban SALAH bernilai 0. Jumlah Soal 50, untuk dikerjakan dalam 2½ JAM (atau 150 menit). Notasi algoritma pada bagian algoritmika menggunakan pseudopascal yang pada intinya seperti pascal tetapi tidak serinci pascal karena diutamakan pada konsep logika di dalam algoritma. Halaman-halaman yang berisi pertanyaan ada di halaman no 2 sampai dengan 17. Jika berkas anda tidak lengkap/rusak/cacat/tak terbaca, mintalah kepada panitia untuk penggantian berkas. Peserta DILARANG: 1. menggunakan perangkat komputasi (laptop, kalkulator, komputer) 2. menggunakan alat komunikasi (handphone, pager, PDA, dll) selama mengerjakan ujian ini, 3. menggunakan buku/referensi/catatan selain berkas soal ini, serta 4. bekerja sama dengan atau mencontek hasil pekerjaan peserta lain. Peserta yang melakukan pelanggaran akan dibatalkan dari keiutsertaan ujian dan dinyatakan gugur. Berkas soal BOLEH digunakan untuk coretan tetapi TIDAK BOLEH dilepas dari bundelannya. Jika bundelan lepas secara tidak disengaja, pengawas diharapkan membundelnya kembali atau diganti dengan berkas baru. Berkas soal TIDAK BOLEH dibawa pulang dan panitia setempat harus menghancurkannya atau menyimpannya hingga seluruh propinsi di Indonesia selesai melaksanakan OSP ini. Sesi 2: Bidang Informatika/Komputer Halaman 1 dari 17 OSP 2013 Olimpiade Sains Tingkat Provinsi 2013 Sesi 2: Bagian Pertanyaan Analitika/Logika Bagian 2 (25 pertanyaan) 1. Gnegus berhasil menangkap 100 ekor tikus yang selalu mencuri makanannya. Karena dia kesal, dia bergumam ”I want to play a game”. Tikus-tikus tersebut diletakkan di dalam satu kotak, tanpa diberikan makanan. Karena tikus-tikus tersebut sangat lapar, mereka mulai memakan sesamanya. Seekor tikus akan memakan seekor tikus setiap minggu untuk bertahan hidup. Bila seekor tikus tidak bisa makan seekor tikus yang lain, maka tikus tersebut akan mati. Tikus yang masih hidup setelah 5 minggu berlalu sejak Gnegus meletakkan tikus-tikus tersebut di dalam kotak berjumlah … {tuliskan dalam bentuk angka} 2. Terdapat 8 buah jeruk dan 3 buah apel. Buah-buah tersebut akan diletakkan pada suatu garis lurus. Tetapi 2 apel tidak boleh bersebelahan satu sama lain. Banyak kemungkinan meletakkan buah-buah tersebut adalah … {tuliskan dalam bentuk angka} Perhatikan deskripsi berikut ini untuk soal no. 3 s.d. 6 PT. TOKI, sebuah perusahaan manufaktur prosesor komputer, membuat 2 macam prosesor untuk dijual. Masing-masing prosesor dibuat melalui 2 tahap dengan menggunakan mesin tahap 1 dan mesin tahap 2. Detil kebutuhannya adalah seperti berikut: Waktu produksi Silikon Besi Profit (rb) Mesin 1 Mesin 2 A 50 gr 70 gr Rp 13 5 2 B 40 gr 30 gr Rp 8 4 3 *Memproduksi 1 prosesor A membutuhkan 50gr Silikon, 70gr Besi, dan 7 jam. *Prosesor yang bisa mendapatkan profit hanyalah yang sudah jadi secara keseluruhan. 3. Jika tidak ada batas waktu untuk memproduksi barang tapi hanya memiliki 4670gr Silikon dan 5950gr Besi, maka profit (keuntungan) maksimum yang bisa didapat dengan membuat hanya produk A adalah sebesar Rp …. {tuliskan dalam bentuk angka} 4. Jika Mesin 1 memiliki batas waktu 49 jam sebelum akhirnya rusak, maka profit maksimum yang bisa didapat adalah sebesar Rp … {tuliskan dalam bentuk angka} 5. Pak Dengklek, Sang Bos, menginginkan keuntungan setidaknya Rp3,393,000 dan meminimalkan penggunaan silikon. Banyak silikon minimum yang dibutuhkan untuk memenuhi keinginan Pak Dengklek tersebut adalah … gram {tuliskan dalam bentuk angka} 6. Terdapat sebuah segitiga sama sisi seperti gambar di samping. N buah titik hendak diletakkan di dalam segitiga. Maka N maksimum yang mungkin jika tidak ada 2 titik yang berjarak kurang dari sama dengan x adalah … {tuliskan dalam bentuk angka} Sesi 2: Bidang Informatika/Komputer Halaman 2 dari 17 2x OSP 2013 Olimpiade Sains Tingkat Provinsi 2013 7. Terdapat denah perumahan sebagai berikut: Garis merupakan jalan, sedangkan angka merupakan nomor rumah. Penduduk di perumahan tersebut suka memberi hadiah kepada tetangga spesialnya. Tetangga spesial adalah nomor rumah yang terdapat di seberang jalan yang memisahkan keduanya dan lebih dekat ke rumah pak RT dibanding dengan dirinya. Rumah Pak RT adalah rumah bernomor 1. Contoh: tetangga spesial dari 28 adalah 11, tetangga spesial dari 16 adalah 5, tetangga spesial dari 18 adalah 5. Tentu saja tidak semua rumah memiliki tetangga spesial, contohnya rumah nomor 1, 3, 17, dll. Siapakah tetangga spesial dari 99? {tuliskan dalam bentuk angka} 8. Terdapat kurs mata uang di planet Bebek sebagai berikut: 1 dolar A = 2 dolar B 1 dolar A = 1.8 dolar C 1 dolar A = 2.5 dolar D 1 dolar B = 0.5 dolar C 1 dolar B = 1.3 dolar D 1 dolar C = 1.5 dolar D Bemi ingin menukarkan 1000 dolar A ke dolar D. Berapa uang maksimal hasil penukaran uang yang dapat diperoleh Bemi? {tuliskan dalam bentuk angka dan jenis dolarnya} 9. Empat pasang suami istri sedang mengadakan pesta. Diantaranya adalah Adam, Budi, Chandra, Dani, Enni, Fitri, Gina, dan Hanny. Mereka kemudian dipasangkan menjadi 4 pasang untuk mengadakan permainan catur. Budi vs Enni Adam vs istrinya Chandra Fitri vs suaminya Gina Dani vs istrinya Adam Gina vs suaminya Enni *Catatan: Adam, Budi, Chandra, Dani adalah laki-laki dan Enni, Fitri, Gina, Hanny adalah wanita. Dalam setiap pasang suami istri, sang suami pasti laki-laki dan sang istri pasti wanita. Dengan demikian, istri Budi adalah …. {tulis namanya, tidak case sensitive} Sesi 2: Bidang Informatika/Komputer Halaman 3 dari 17 OSP 2013 Olimpiade Sains Tingkat Provinsi 2013 10. Besok, Raja Dengklek akan mengadakan pesta yang sangat besar. Raja Dengklek telah memesan 2013 botol anggur untuk pestanya tersebut. Namun berdasarkan laporan, salah satu dari botol anggur tersebut telah diberi racun. Racun ini diketahui tidak akan menunjukkan tanda-tanda keracunan sampai orang yang meminumnya mati. Kematian terjadi antara 13-20 jam setelah racun terminum, walaupun hanya terminum setetes. Raja Dengklek memiliki 2013 orang tahanan yang rencananya akan dieksekusi. Raja Dengklek harus berhasil menemukan botol anggur yang mengandung racun tersebut dalam waktu 24 jam. Berapa minimal banyaknya tahanan yang harus minum dari botol-botol anggur yang ada untuk memastikan botol mana yang mengandung racun? {tuliskan dalam bentuk angka} Deskripsi berikut ini akan digunakan pada soal 11 s.d 13. Pada grid 4 x 4 di atas, akan diletakkan N buah koin, di mana tiap kotak dapat menampung maksimal satu koin. Untuk tiap baris, atau kolom, atau diagonal dengan dua buah kotak atau lebih (yang diberi garis panah di atas), jika terdapat sejumlah genap koin pada garis tersebut, maka Anda akan mendapatkan satu poin (Ingat bahwa nol adalah genap). Total poin adalah jumlah dari semua poin pada semua garis. Sebagai contoh, jika N = 4, konfigurasi berikut mendapatkan total poin 14 (garis tebal menunjukkan garis tersebut mendapatkan satu poin) 11. Jika N = 8, maka maksimal total poin yang dapat diperoleh adalah … {tuliskan dalam bentuk angka} 12. Jika N = 9, maka maksimal total poin yang dapat diperoleh adalah … {tuliskan dalam bentuk angka} 13. Jika N = 10, maka maksimal total poin yang dapat diperoleh adalah … {tuliskan dalam bentuk angka} Sesi 2: Bidang Informatika/Komputer Halaman 4 dari 17 OSP 2013 Olimpiade Sains Tingkat Provinsi 2013 Deskripsi berikut ini akan digunakan pada soal 14 dan 15 Enam musisi bernama Ali, Berty, Cakra, Denis, Eric, dan Felik, akan memainkan tiga buah lagu dalam sebuah konser. Tiap lagu membutuhkan dua biola, sebuah cello, dan sebuah piano. Tentu saja tiap orang harus bermain dalam minimal satu lagu, dan tiap orang hanya bisa memainkan satu instrumen dalam tiap lagu (jika dia bermain di lagu itu). Karena takut performanya berkurang, jika seseorang memainkan dua lagu berurutan, maka instrumen yang dimainkan dalam kedua lagu tersebut tidak boleh sama. Ali hanya bisa bermain biola, dan harus memainkan lagu pertama; Berty dan Eric keduanya dapat bermain biola dan piano; Cakra dapat bermain biola dan cello; Denis hanya dapat bermain cello; sedangkan Felik hanya dapat bermain piano. 14. Dari keenam musisi tersebut, siapa sajakah yang tidak dapat bermain di lagu kedua? {tuliskan namanya, tidak case sensitive} 15. X ternyata tidak bisa bermain di konser karena tangannya terjepit pintu. Ternyata kelima musisi sisanya tetap dapat menjalankan konser sesuai syarat-syarat di atas. Siapakah X? {tuliskan namanya, tidak case sensitive} 16. Bayu memiliki koin uang 200, 300, 500, dan 700 yang sangat banyak. Ia berniat untuk membeli buku pemrograman seharga 2000. Karena koin uang tersebut cukup berat apabila ditaruh dalam kantung celana, ia hanya ingin membawa uang seminimal mungkin. Untuk itu, koin yang seharusnya ia bawa sebanyak ... keping. {tuliskan dalam bentuk angka} . 17. Perhatikan aturan-aturan berikut ini: 1<x,y,z<9 x^3 bilangan ganjil x(x+1) > 20 y^3 bilangan genap x*y <50 z bilangan genap x+y+z<17 Berapakah nilai x*(y+z) maksimal yang bisa dibentuk? {tuliskan dalam bentuk angka} 18. Pak Dengklek sedang mengajari bebek-bebeknya menulis huruf. Ia meminta bebek-bebeknya bergantian memilih 26 huruf (a sampai dengan z) dan menuliskannya di papan tulis yang disediakan. Pak Dengklek akan mengakhiri sesi belajar menulis ini apabila 26 huruf tersebut minimal masingmasing sudah dituliskan sebanyak 10 kali. Selain itu, ia membuat aturan bahwa, apabila sebuah huruf sudah dituliskan sebanyak 26 kali, maka bebek selanjutnya yang hendak menuliskan huruf tersebut harus memilih huruf yang lain yang belum dituliskan sebanyak 26 kali. Berapakah paling Sesi 2: Bidang Informatika/Komputer Halaman 5 dari 17 OSP 2013 Olimpiade Sains Tingkat Provinsi 2013 banyak huruf yang bisa dituliskan bebek-bebek Pak Dengklek sebelum sesi belajar menulis berakhir? {tuliskan dalam bentuk angka} 19. Andi setiap hari pergi ke sekolah menggunakan sepeda dengan kecepatan a km/jam. Namun, di daerah tersebut terdapat angin yang berhembus terus menerus dari arah rumah ke sekolah dengan kecepatan b km/jam. Angin ini mempengaruhi kecepatan sepeda yang dikayuh oleh Andi dengan aturan Bila berjalan searah angin maka kecepatan menjadi a + b km/jam Bila berjalan berlawanan dengan angin maka kecepatan menjadi a-b km/jam. Ia membutuhkan waktu 3 jam untuk berangkat dari rumah ke sekolah, sedangkan dalam perjalanan pulang ia membutuhkan waktu 4 jam. Apabila tidak ada angin yang berhembus, maka berapa jam yang dibutuhkan untuk menempuh perjalanan dari rumah ke sekolah? {tuliskan dalam bentuk angka} 20. Sebuah kotak berisi 6 bola merah dan 5 bola kuning. Budi, lalu Andi, dan kemudian Didi mengambil masing-masing satu bola secara berurutan. Berapa kemungkinan bola yang diambil Andi berwarna sama dengan salah satu atau kedua bola yang diambil oleh dua orang lainnya? {tuliskan dalam bentuk angka} 21. Shintia memiliki 5 botol air berukuran 61 ml, 25 ml, 13 ml, 7 ml dan 3 ml. Awalnya ia memiliki X ml air di baskom dan hendak mendapatkan Y ml air dengan cara menakar air (penakaran harus bulat) tersebut ke botol-botol dan tidak boleh ada air tersisa di baskom. Contoh: pada baskom terdapat 10 ml air dan ia hendak mendapatkan 3 ml air. Pertama 10 ml tersebut akan dituangkan ke dalam botol berkapasitas 13 ml, lalu akan dituangkan 3 ml air ke botol yang berkapasitas 3 ml sampai full dan akhirnya ia mendapatkan 3 ml air (2 penuangan) dan tersisa 7 ml air pada botol berkapasitas 13 ml. Sekarang ia memiliki 31 ml air di baskom dan hendak mendapatkan 6 ml air. Jika total penuangan yang dilakukan tidak lebih dari 5 kali dan harus ada air dalam tiap botol, berapakah ml jumlah air pada dua botol dengan air tersedikit pada akhir penuangan? (catatan : penuangan dilakukan sampai botol yang dituangkan air penuh atau isi botol/baskom yang menuangkan air sudah habis) {tuliskan dalam bentuk angka} Deskripsi berikut ini akan digunakan pada soal 22 s.d. 23 Terdapat N kota dengan N nama berbeda. Setiap kota memiliki populasi penduduk masing-masing. Pemerintah negara tersebut pusing karena terdapat terlalu banyak kota. Pemerintah tersebut berencana menggabungkan kota-kota tersebut hingga hanya tersisa satu kota. Caranya begini. Selama masih ada 2 kota atau lebih, pemerintah memilih 2 kota sesuka dia, kemudian menggabungkan kedua kota tersebut. Nama kota yang baru tersebut ialah nama salah satu kota dari kedua kota asalnya yang memiliki jumlah penduduk lebih banyak. Apabila jumlah penduduknya sama, namanya boleh yang mana saja. Tugas Anda pada soal ini ialah menghitung ada berapa nama kota berbeda dari kota terakhir yang mungkin terjadi dengan asumsi pemerintahnya memilih kedua kota tersebut secara acak? Sesi 2: Bidang Informatika/Komputer Halaman 6 dari 17 OSP 2013 Olimpiade Sains Tingkat Provinsi 2013 22. Misalkan N = 8, dan jumlah penduduk masing-masing kota adalah 2, 50, 24, 21, 1, 9, 15, dan 5 orang. Setelah seluruh kota berhasil digabung menjadi 1 kota, ada berapa nama kota berbeda dari kota yang mungkin? {tuliskan dalam bentuk angka} 23. Misalkan N = 100, dan tiap kota diberi nomor 1 sampai 100. Jumlah penduduk di kota i adalah i*i. Ada berapa nama kota berbeda dari kota yang mungkin? {tuliskan dalam bentuk angka} 24. Dalam sebuah turnamen, setiap orang akan berlomba dengan semua peserta lain tepat satu kali. Dalam turnamen tersebut 3 orang mengundurkan diri setelah menjalani 2, 4, dan 6 perlombaan. Diketahui sepanjang turnamen telah diadakan 103 perlombaan, berapa orang yang berpartisipasi pada awal turnamen tersebut? {tuliskan dalam bentuk angka} 25. Ada berapa himpunan bagian dari {1,2,...,9} sedemikian sehingga tidak ada 2 anggota yang berurutan? (misal himpunan {1,4,5} dilarang karena memiliki dua anggota 4 dan 5, sementara 4 dan 5 adalah 2 bilangan yang berurutan, sedangkan himpunan {2,4,8} boleh) {tuliskan dalam bentuk angka} Sesi 2: Bidang Informatika/Komputer Halaman 7 dari 17 OSP 2013 Olimpiade Sains Tingkat Provinsi 2013 Sesi 2: Bagian Pertanyaan Algoritmika (25 pertanyaan) 26. Perhatikan potongan program berikut! var N,hasil: integer; procedure solve(X:integer); begin if (X>1) then begin hasil:=hasil+1; solve(X div 2 + X mod 2); end; end; begin readln(N); hasil:=0; solve(N); writeln(hasil); end. Bila diberi masukan bilangan 77, maka program akan memberikan keluaran … 27. Perhatikan potongan program di bawah ini! base := ‘QWERTYUIOPLKJHGFDSAZXCVBNM’; kata := ‘’; readln(kalimat); for i:= length(kalimat) downto 1 do begin if pos(kalimat[i], base) > 0 then kata:= kata & kalimat[i]; end; writeln(kata); Fungsi pos (CC:char, str:string) adalah fungsi yang akan menghasilkan posisi CC di suatu string str, jika suatu CC tidak terdapat di string, fungsi pos akan menghasilkan 0. Operator & adalah sebuah operator untuk menambahkan sebuah karakter di akhir sebuah string. Jika program di atas diberi masukan ‘s4yA-BuK4N+oRanG aLaY!?’, maka keluarannya adalah … 28. Perhatikan potongan program berikut! function kibo(n: integer):integer; begin if (n = 2) or (n = 1) or (n = 0) then kibo := n else kibo := kibo(n-1) + kibo(n-3); end; Berapa kalikah kibo(3) dipanggil saat pemanggilan kibo(7) ? {tuliskan angkanya} Sesi 2: Bidang Informatika/Komputer Halaman 8 dari 17 OSP 2013 Olimpiade Sains Tingkat Provinsi 2013 29. Perhatikan potongan program berikut! var we: longint; Z: array[1..15] of longint = (64, 19, 56, 67, 66, 82, 31, 20, 67, 10, 94, 100, 57, 14, 86); function f(x: longint; y: longint): longint; var a, b: longint; begin if (x = y) then f := Z[y] else begin a := f(x, (x+y) div 2); b := f((x+y) div 2+1, y); if (a < b) then f := a else f := b end end; begin we := f(3,11); writeln(we); end. Apakah keluaran dari program tersebut? Potongan program berikut ini akan digunakan pada soal 5 dan 6 var s:string; cl,cr:integer; procedure right(l, r : integer); forward; procedure swap(l, r : integer); var c : char; begin if (l>=1) and (r<=length(s)) then begin c:=s[l]; s[l]:=s[r]; s[r]:=c; end; end; procedure left(l, r : integer); Halaman 9 dari 17 begin inc(cl); swap(l,r); if (r<length(s)) then Sesi 2: Bidang Informatika/Komputer OSP 2013 Olimpiade Sains Tingkat Provinsi 2013 procedure left(l, r : integer); begin inc(cl); swap(l,r); if (r<length(s)) then right(l,r+1); end; procedure right(l, r : integer); begin inc(cr); swap(l,r); if (l>1) then left(l-1,r); end; begin s:='gogetgold'; left(9,1); writeln(s); writeln(cl,',',cr); end. 30. Apakah yang akan tercetak dari hasil pemanggilan perintah writeln(cl,',',cr)? 31. Jika perintah left(9,1) diganti dengan left(5,5), apakah yang akan tercetak dari hasil pemanggilan perintah writeln(s)? Potongan program berikut ini akan digunakan pada soal 7 dan 8 procedure tulis(n,m:integer); var i,j,k:integer; begin for i:=1 to n do begin for j:=1 to (n div m) do for k:=1 to m do writeln('*'); for j:=1 to (n mod m) do writeln('-'); end; end; 32. Bila kita memanggil prosedur tulis(30,30), berapakah jumlah ‘*’ yang tertulis? {tuliskan angkanya} Sesi 2: Bidang Informatika/Komputer Halaman 10 dari 17 OSP 2013 Olimpiade Sains Tingkat Provinsi 2013 33. Bila kita memanggil prosedur tulis(n,m), berapakah jumlah simbol (‘*’ maupun ‘-‘) yang tertulis? {tuliskan/nyatakan dalam m atau n} 34. Perhatikan potongan program di bawah ini! var T:array[1..13] of integer = (32, 6, 12, 64, 68, 100, 214, 120, 30, 80, 24, 22, 88); function q(c,d:integer):integer; var e:integer; begin if (d=0) then q:=c else begin e:=c mod d; q:=q(d,e); end; end; function p(a,b:integer):integer; var i:integer; begin p:=T[a]; for i:=a to b do begin p:=q(p,T[i]); end end; begin writeln(p(1,13)); end. Berapakah output dari program di atas? 35. Jika a[] adalah array berindex 0..9 dengan isi {1,-1,-2,-1,-1,1,-1,2,-1,3}, maka berapakah nilai tot di akhir program? Sesi 2: Bidang Informatika/Komputer Halaman 11 dari 17 OSP 2013 Olimpiade Sains Tingkat Provinsi 2013 Potongan program berikut ini akan digunakan pada soal 10 dan 11 function hap(x,t: integer): integer; begin if t = 1 then hap := x mod 5 else hap := 5*x; end; function hip(x,y: integer): integer; begin if x < y then hip := hip(y,x) else hip := hap(x,1) + hap(y,2); end; function hop(x,y,z: integer): integer; begin if y > z then hop := hop(x,z,y) else if x > y then hop := hop(y,x,z) else hop := hip(x,y) + z; end; 36. Apakah output dari pemanggilan writeln(hop(18, 3, 1993)) ? 37. Apakah output dari pemanggilan writeln(hip(hop(201,320,12), hop(20,1120,10)) + hap(21,30)) ? Sesi 2: Bidang Informatika/Komputer Halaman 12 dari 17 OSP 2013 Olimpiade Sains Tingkat Provinsi 2013 38. Diberikan potongan program berikut ini: program hahaha; var n, i, j, hehe : integer; a, hoho : array [0..1000] of integer; begin read(n); for i := 1 to n do read(a[i]); for i := 1 to n do hoho[i] := 1; for i := 1 to n do for j := 1 to i-1 do if (a[j] < a[i]) and (hoho[j] + 1 > hoho[i]) then hoho[i] := hoho[j] + 1; hehe := 0; for i := 1 to n do if (hoho[i] > hehe) then hehe := hoho[i]; write(hehe); end. Berapakah nilai keluaran dari program tersebut, jika diberi masukan sebagai berikut? 10 4162830795 39. Perhatikan potongan program di bawah ini! for i:=1 to n do begin for k:=i to n-1 do write(' '); for j:=1 to (2*i-1) do if (i=n) or (i mod 2=1) then write('*') else if j mod 2=1 then write('*') else write('0'); writeln; end; for l:=n downto 2 do begin for m:=l to n do write(' '); for o:=(2*l-1) downto 3 do if o mod 2=1 then write('*') else write('0'); writeln; end; Apabila diberi masukan n=7, maka berapakah banyaknya ‘*’ yang dicetak pada layar? Sesi 2: Bidang Informatika/Komputer Halaman 13 dari 17 OSP 2013 Olimpiade Sains Tingkat Provinsi 2013 Perhatikan potongan program di bawah ini, untuk digunakan pada soal no 15 dan 16: function mencari(N:integer):integer; var i,j,z:integer; begin mencari:=0; for i:=1 to N do begin j:=1; z:=0; while (j <= i) do begin if (i mod j = 0) then inc(z); inc(j); end; if (z mod 2 <> 0) then mencari:=mencari+1; end; end; 40. Berapakah nilai yang dihasilkan dari pemanggilan mencari(50)? 41. Berapakah nilai yang dihasilkan dari pemanggilan mencari(9000)? 42. Perhatikan potongan program di bawah ini! var data1 : array[1..10] of integer = (3,9,2,2,1,5,7,5,5,8); data2,data3 : array[1..10] of integer; i : integer; begin for i:= 1 to 10 do data2[i] := 0; for i:= 1 to 10 do inc(data2[data1[i]]); for i:= 2 to 10 do data2[i] := data2[i] + data2[i-1]; for i:= 10 downto 1 do begin data3[data2[data1[i]]] := data1[i]; dec(data2[data1[i]]); end; for i:= 1 to 10 do write(data3[i]); end. Keluaran dari program di atas adalah .... Sesi 2: Bidang Informatika/Komputer Halaman 14 dari 17 OSP 2013 Olimpiade Sains Tingkat Provinsi 2013 43. Perhatikan potongan program di bawah ini! var i,j,x: integer; begin x := 0; for i:=1 to 5 do begin for j:= 5 downto 1 do begin x := x + i + j; end; end; writeln(x); end. Apakah keluaran dari program di atas? Perhatikan program di bawah ini, untuk soal no 19 dan 20: var x,y:integer; procedure abc(a:integer;var b:integer); var c:integer; begin if not((a=0)or(b=0)) then if (a>b) then begin a:=a mod b; abc(b,a); end else begin b:=b mod a; abc(a,b); end; write(a,' '); end; begin x:=219; y:=168; abc(x,y); end. 44. Apa keluaran yang dihasilkan dari program tersebut? 45. Jika perintah “write(a,' ');” diubah menjadi “write(b,' ');” maka keluaran yang dihasilkan menjadi? Sesi 2: Bidang Informatika/Komputer Halaman 15 dari 17 OSP 2013 Olimpiade Sains Tingkat Provinsi 2013 46. Perhatikan program di bawah ini var sum, i, j, n, c : integer; begin readln(n); sum := 0; for i := 2 to n do begin c := 0; j := i; while (j > 0) do begin if (j mod 2 = 1) then c := c + 1; j := j div 2; end; if (c = 1) then sum := sum + 1; end; writeln(sum); end. Jika potongan program dijalankan dengan masukan n = 2013, maka program akan menuliskan keluaran … 47. Perhatikan potongan program di bawah ini! procedure f(x: longint; y: longint; z: longint); begin if (y = 0) then writeln(z) else begin if (y mod 2 = 1) then z := z + x; f(2*x, y div 2, z) end; end; Berapakah bilangan yang tercetak dilayar jika dilakukan pemanggilan f(15,97,0)? Sesi 2: Bidang Informatika/Komputer Halaman 16 dari 17 OSP 2013 Olimpiade Sains Tingkat Provinsi 2013 Perhatikan potongan program di bawah ini, untuk soal no 23 dan 24 function flop(a,b:longint):longint; forward; function flip(a,b:longint):longint; begin if (a = 0) then flip:=0 else flip:=a+flop(a-1,b); end; function flop(a,b:longint):longint; begin if (b = 0) then flop:=0 else flop:=b+flip(a,b-1); end; 48. Berapakah nilai yang dihasilkan dari pemanggilan fungsi flip(4,7)? 49. Berapakah nilai yang dihasilkan dari pemanggilan fungsi flop(100,200)? 50. Misalkan terdapat sebuah array bernama a berisi N elemen, yang diisi di indeks 0 s.d. N-1. for i := 0 to N-1 do begin for j := i+1 to N-1 do begin buffer := a[i]; a[i] := a[j]; a[j] := buffer; end; end; Apa yang dilakukan oleh prosedur itu terhadap array a? SELAMAT MENGERJAKAN Sesi 2: Bidang Informatika/Komputer Halaman 17 dari 17 OSP 2013 Hak Cipta Dilindungi Undang-undang SOAL UJIAN SELEKSI CALON PESERTA OLIMPIADE SAINS NASIONAL 2014 TINGKAT PROVINSI INFORMATIKA/KOMPUTER SESI-2 Waktu: 160 menit KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN DIREKTORAT JENDERAL PENDIDIKAN MENENGAH DIREKTORAT PEMBINAAN SEKOLAH MENENGAH ATAS TAHUN 2014 KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN DIREKTORAT JENDERAL PENDIDIKAN MENENGAH DIREKTORAT PEMBINAAN SEKOLAH MENENGAH ATAS OLIMPIADE SAINS 2014 TINGKAT PROVINSI BIDANG INFORMATIKA/KOMPUTER Lembar Peraturan dan Peringatan Selama Ujian 50 Soal untuk dikerjakan Selama 160 menit Peserta hanya dibolehkan membawa tanda pengenal, alat tulis dan penghapus saat memasuki ruang ujian. Bagian Informasi Model ujian untuk nomor 1 sd 48 adalah isian singkat. Tuliskan jawaban anda sesingkatsingkatnya pada lembar jawaban di kolom nomor soal yang bersesuaian. Jika jawaban yang diminta merupakan ANGKA tuliskan dengan ANGKA TANPA SATUAN [Contoh: penulisan angka 5 dengan tulisan “lima” tidak diperkenankan.] Soal nomor 49 dan 50 adalah menyusun program komputer/algoritmika. Jawaban BENAR bernilai 3, jawaban SALAH bernilai 0. Jumlah Soal 50, untuk dikerjakan dalam 160 menit. Notasi algoritma pada soal bagian algoritmika menggunakan pseudopascal yang pada intinya seperti pascal tetapi tidak serinci pascal karena diutamakan pada konsep logika di dalam algoritma. Halaman-halaman yang berisi pertanyaan ada di halaman no 1 sampai dengan 16. Jika berkas anda tidak lengkap/rusak/cacat/tak terbaca, mintalah kepada panitia untuk penggantian berkas. Peserta DILARANG: 1. menggunakan perangkat komputasi (laptop, kalkulator, komputer) 2. menggunakan alat komunikasi (handphone, pager, PDA, dll) selama mengerjakan ujian ini, 3. menggunakan buku/referensi/catatan selain berkas soal ini, serta 4. bekerja sama dengan atau mencontek hasil pekerjaan peserta lain. Peserta yang melakukan pelanggaran akan dibatalkan dari keiutsertaan ujian dan dinyatakan gugur. Berkas soal BOLEH digunakan untuk coretan tetapi TIDAK BOLEH dilepas dari bundelannya. Jika bundelan lepas secara tidak disengaja, pengawas diharapkan membundelnya kembali atau diganti dengan berkas baru. Berkas soal TIDAK BOLEH dibawa pulang dan panitia setempat harus menghancurkannya atau menyimpannya hingga seluruh propinsi di Indonesia selesai melaksanakan OSP ini. Olimpiade Sains Tingkat Provinsi 2014 Bagian Pertanyaan Analitika/Logika (25 pertanyaan) 1. TOKI Camp 2014 kali ini diadakan di sebuah bukit. Seorang alumni TOKI mendaki bukit tersebut dengan berjalan dengan kecepatan 1,5 km/jam. Ketika menuruni bukit tersebut, ia berjalan tiga kali lebih cepat. Jika waktu yang dibutuhkan untuk melakukan perjalanan bolak-balik dari kaki bukit ke puncak bukit dan kembali ke kaki bukit adalah 6 jam, maka jarak antara kaki bukit dan puncak bukit (dalam km) adalah … {tuliskan dalam bentuk angka} 2. Pada sebuah toples, terdapat 1 juta ekor bakteri. Pada setiap detiknya, setiap bakteri membelah diri menjadi tepat dua ekor bakteri, kemudian toples tersebut dimasukkan 1 juta ekor bakteri tambahan. (Pada detik pertama, ada 3 juta bakteri. Pada detik kedua, ada 7 juta bakteri.) Berapakah banyak (dalam juta) bakteri pada detik ke 14? … {tuliskan dalam bentuk angka} Perhatikan deskripsi berikut ini untuk soal no. 3 s.d. 5 Dari 100 orang peserta OSN komputer, diketahui 40 orang menyukai soal kombinatorika, 40 orang suka soal teori bilangan, dan 48 orang suka teka-teki silang. Diketahui pula 4 orang suka ketiganya. 3. Jika peserta yang hanya suka dengan satu jenis soal saja ada 50 orang, berapa orang yang hanya suka dengan dua jenis soal? …. {tuliskan dalam bentuk angka} 4. Berdasarkan jawaban soal sebelumnya, jika yang hanya menyukai soal kombinatorika adalah 14 orang, berapa orang yang suka kombinatorika dan teori bilangan, atau suka kombinatorika dan teka-teki silang, namun tidak ketiganya? … {tuliskan dalam bentuk angka} 5. Bila peserta yang menyukai persis hanya 2 jenis soal adalah 31 orang, berapa orang yang tidak suka satupun dari ketiga jenis soal tersebut? … {tuliskan dalam bentuk angka} 6. Diberikan sebuah fungsi F(x) = 1 - 2x - 3x2 - 4x3 dengan x bilangan bulat dimulai dari 1 sampai dengan 30. Berapakah x yang memenuhi F(x) = -20552? … {tuliskan dalam bentuk angka} Petunjuk: semakin besar nilai x, maka semakin kecil nilai F(x). 7. Dewangga memiliki 2 ekor semut dan 2 ekor anak semut. Suatu hari, para semut dan anaknya ingin menyeberangi sungai dengan menggunakan perahu daun. Namun, perahu daun tersebut hanya cukup menampung 2 ekor anak semut atau seekor semut dewasa. Hebatnya, para semut Dewangga sudah terlatih untuk mendayung perahu daun, sehingga tiap kali menyeberang minimal harus ada 1 ekor semut atau 1 ekor anak semut yang mendayung. Untuk menyeberangkan keempat ekor semut, berapa kali minimum perahu tersebut harus menyeberangi sungai (bolak-balik dihitung 2 kali penyeberangan)? … {tuliskan dalam bentuk angka} Sesi 2 : Bidang Informatika/Komputer Halaman 1 dari 16 OSP 2014 Olimpiade Sains Tingkat Provinsi 2014 Perhatikan deskripsi berikut ini untuk soal no. 8 dan 9 Budi ingin bermain Loncat Berhadiah. Permainan dimainkan pada sebuah kotak berukuran R x C petak. Petak kiri atas dinomori (1, 1) dan petak kanan bawah dinomori (R, C). Pada setiap petak terdapat sebuah bilangan. Budi memulai permainan dengan memilih salah satu petak pada kolom 1. Dari suatu petak (r, c), Budi harus berpindah ke petak (r, c+1), (r+1, c+1), atau (r-1, c+1). Apabila Budi sudah berada pada kolom C, permainan berakhir. Budi mendapat poin berupa jumlah seluruh bilangan yang terdapat pada petak-petak yang dilalui Budi. 8. Berapa poin maksimum yang dapat diperoleh Budi pada kotak permainan di bawah ini? … {tuliskan dalam bentuk angka} 2 5 5 1 3 1 4 2 4 2 3 3 9. Berapa poin maksimum yang dapat diperoleh Budi pada kotak permainan di bawah ini? … {tuliskan dalam bentuk angka} 1 7 9 10 3 5 4 2 4 8 4 3 5 3 5 5 6 1 2 4 6 9 3 2 3 5 6 1 2 5 10. Heru selalu berkata jujur pada hari Senin, Selasa, dan Rabu. Heru selalu berkata bohong pada hari Kamis, Jumat, dan Sabtu. Pada hari Minggu, ia bisa berkata jujur atau bohong. Pada suatu hari, teman Heru, Kudo ingin menanyakan suatu informasi yang penting pada Heru. Sayangnya, Kudo lupa melihat kalender sehingga lupa tanggal dan hari pada saat itu. Tentu saja Kudo yang cerdas tidak langsung menanyakan pertanyaannya pada Heru. Setelah Kudo menanyakan beberapa pertanyaan, Heru menjawab, “Hari ini saya sedang berkata jujur, begitu pula esok hari. Hari ini bukan hari Kamis maupun Senin. Kemarin saya berkata bohong. Kemarin adalah hari Minggu“. Pada hari apakah Kudo bertemu Heru? … {tulis nama harinya, tidak case sensitive } 11. N orang berdiri membentuk lingkaran, dan menunggu pembagian hadiah. Penghitungan dimulai pada suatu titik dan disebut posisi pertama, posisi selanjutnya mengikuti arah jarum jam. Pada setiap penghitungan, K-1 orang akan dilewati dan orang ke K akan keluar dari lingkaran. Proses ini dilakukan berulang-ulang hingga tinggal 1 orang dalam lingkaran dan orang tersebut yang akan mendapatkan hadiah. Jika diberikan N = 20 dan K = 14, orang pada posisi berapa yang akan mendapatkan hadiah? … {tuliskan dalam bentuk angka} Contoh : N = 5 dan K = 2, maka urutan orang yang keluar mulai dari yang paling awal adalah 2, 4, 1, 5, sehingga yang akan mendapatkan hadiah adalah orang pada posisi 3. Sesi 2 : Bidang Informatika/Komputer Halaman 2 dari 16 OSP 2014 Olimpiade Sains Tingkat Provinsi 2014 12. Di sebuah kota yang terdiri dari 13 persimpangan (yang diberi angka), terdapat jalan-jalan yang menghubungkan beberapa persimpangan. Fathin ingin berjalan-jalan dari tempat tinggalnya di persimpangan berlabel X ke suatu persimpangan berlabel Y. Y bisa saja sama dengan X. Tanpa dia sadari, rute yang dia tempuh dalam perjalanannya melewati semua jalan (bukan persimpangan) tepat satu kali. Berapakah label X terkecil yang mungkin ? … {tuliskan dalam bentuk angka} Deskripsi berikut ini akan digunakan pada soal 13 dan 14. Suatu hari Pak Dengklek sedang membangun rumah baru, ia ingin membuat dekorasi berupa sebuah persegi panjang dengan lebar 1 satuan. Ia memiliki dua jenis segitiga, yang pertama segitiga siku-siku sama kaki dengan panjang kaki 1 satuan, dan segitiga yang kedua berupa segitiga sama kaki gabungan dua segitiga yang pertama. 13. Jika pak Dengklek membuat dekorasi dengan panjang 3 satuan, ada berapa cara untuk membuat dekorasi tersebut? … {tuliskan dalam bentuk angka} 14. Selanjutnya pak Dengklek ingin membuat dengan panjang 8 satuan, ada berapa cara untuk membuat dekorasi tersebut? … {tuliskan dalam bentuk angka} 15. Terdapat 6 siswa dan 8 siswi di dalam sebuah kelas. Apabila suatu tim yang beranggotakan 5 orang akan dibentuk dari kelas tersebut. Berapa banyak kemungkinan komposisi isi tim apabila minimum terdapat 1 siswa dan 1 siswi di dalam tim tersebut? … {tuliskan dalam bentuk angka} Sesi 2 : Bidang Informatika/Komputer Halaman 3 dari 16 OSP 2014 Olimpiade Sains Tingkat Provinsi 2014 Deskripsi berikut ini akan digunakan pada soal 16 s.d 18. Walikota Budi ingin membuat sebuah rute transonjek di sebuah provinsi Bagus. Sebuah rute transojek harus memenuhi beberapa kriteria di bawah ini : Sebuah rute harus menghubungkan semua kota-kota yang berada pada provinsi Bagus Dari setiap kota hanya boleh terdapat tepat 1 jalur menuju setiap kota lainnya Jumlah jalur yang dipakai harus berjumlah N-1 (N adalah jumlah kota) Tidak diperbolehkan membuat jalur baru (hanya diperbolehkan menggunakan jalur yang telah disediakan) Apabila sebuah kota x terhubung dengan kota y, maka kota y juga terhubung dengan kota x 16. Apabila dalam provinsi Bagus terdapat 7 kota A,B,C,D,E,F,G berapa banyak konfigurasi rute yang memenuhi jika jalur yang ada sebagai berikut? ... {tuliskan dalam bentuk angka} Kota A terhubung dengan kota B dan C Kota D terhubung dengan kota B, C , dan E Kota E terhubung dengan kota F dan G Kota F terhubung dengan G 17. Apabila dalam provinsi Bagus terdapat 12 kota A,B,C,D,E,F,G,H,I,J,K, dan L berapa banyak konfigurasi rute yang memenuhi jika jalur yang ada sebagai berikut? ... {tuliskan dalam bentuk angka} Kota B terhubung dengan kota A dan C Kota D terhubung dengan kota C dan I Kota E terhubung dengan kota C,F,G, dan H Kota F terhubung dengan kota G Kota I terhubung dengan kota H,J,dan L Kota K terhubung dengan kota J dan L 18. Apabila pada provinsi Bagus semua kota yang ada saling terhubung dengan kota lainnya berapa banyak konfigurasi rute transojek yang dapat dibentuk apabila jumlah kota yang ada dalam provinsi Bagus berjumlah 4? ... {tuliskan dalam bentuk angka} 19. Perhatikan pola bangun berikut ini. Jika untuk n=3 terdapat 5 macam ukuran persegi panjang yang dapat dibentuk, {2×1, 3×1, 4×1, 5×1, 2×3}. Bujur sangkar tidak termasuk sebagai persegi panjang yang dimaksud di sini. Tentukan berapa banyak macam ukuran persegi panjang yang dapat dibentuk untuk n=100? ... {tuliskan dalam bentuk angka} Catatan: a×b dan b×a, a≠b, dianggap sebagai ukuran persegi panjang yang sama. Sesi 2 : Bidang Informatika/Komputer Halaman 4 dari 16 OSP 2014 Olimpiade Sains Tingkat Provinsi 2014 20. Pada suatu permainan kartu, terdapat 2 jenis kartu: kartu emas dan kartu perak. Permainan dilakukan oleh 1 orang pemain dengan tujuan mendapatkan kartu emas sebanyak-banyaknya. Berikut adalah aturan permainan tersebut: Pada setiap putaran, pemain hanya dapat mengambil selembar kartu Pemain tidak dapat mengambil 5 kartu perak secara berturut-turut Jika pada p+1 putaran sebelumnya pemain telah mengambil p+1 kartu perak secara berturut-turut, maka paling banyak p kartu emas baru boleh diambil secara berturutturut Berapa jumlah maksimal kartu emas yang dapat diambil jika pemain bermain selama 613 putaran ? ... {tuliskan dalam bentuk angka} 21. Ammar, Soko, Salvian, Ivan dan Rakina bermain ayam-bebek. Setiap anak menjadi ayam atau bebek, tetapi tidak kedua-duanya. Ayam selalu jujur, sementara bebek selalu berdusta. Ammar berkata bahwa Soko adalah ayam. Salvian berkata bahwa Ivan adalah bebek. Rakina berkata Ammar bukan bebek. Soko berkata Salvian bukan ayam. Ivan berkata bahwa Rakina dan Ammar adalah binatang yang berbeda. Berapakah banyaknya bebek dalam permainan ini? ... {tuliskan dalam bentuk angka} Deskripsi berikut ini akan digunakan pada soal 22 dan 23. Pada suatu sore hari Budi sedang amat teramat bosan sehingga ia menciptakan sebuah permainan yang sangat inovatif yaitu “Lempar bola”. Tujuan permainan ini sangat sederhana yaitu Budi hanya ingin memasukkan satu-satunya bola yang ia pegang sekarang ke dalam keranjang-keranjang yang terdapat dalam suatu tempat. Ketika dia berhasil memasukkan bola ke dalam suatu keranjang, maka Budi akan berjalan ke koordinat keranjang yang dia masukkan dan mengambil bola tersebut dan melemparkan bola tersebut ke keranjang lain yang belum dimasukkan dari posisi Budi sekarang. Budi ingin berjalan seminimum mungkin. Bantulah Budi untuk menghitung jarak minimum untuk memasukan bola ke semua keranjang. 22. Berapa jarak minimum yang dapat ditempuh untuk memasukan bola ke semua keranjang apabila koordinat Budi sekarang dan koordinat keranjang seperti gambar dibawah ini? ... {tuliskan dalam bentuk angka} 23. Berapa jarak minimum yang dapat ditempuh untuk memasukan bola ke semua keranjang apabila koordinat Budi sekarang terdapat di titik 0 dan koordinat Keranjang terdapat di titik -20, -15, -9, -5, -3, 2, 3, 10, 13, 20?... {tuliskan dalam bentuk angka} Sesi 2 : Bidang Informatika/Komputer Halaman 5 dari 16 OSP 2014 Olimpiade Sains Tingkat Provinsi 2014 24. String adalah kumpulan dari karakter, sedangkan substring adalah string yang berturutan yang merupakan bagian dari string lain. Misal, “ABCDEF”, “BCDE”, dan “ABEC” adalah string. “CBBC” merupakan substring dari “ACBBCA” namun “CBCA” bukan merupakan substring dari “ACBBCA”. Berapa banyak string yang terdiri dari huruf A, B dan C, yang memiliki panjang 8 dan tidak mengandung substring AB? ... {tuliskan dalam bentuk angka} 25. Di sebuah peternakan terdapat beberapa jenis hewan. Ada yang pemakan tumbuh-tumbuhan, daging dan pemakan segala. Ada yang berkaki 2, berkaki 4 dan tidak berkaki. Jika suatu saat dipilih secara acak seekor hewan, kemungkinan terpilih hewan berkaki empat atau pemakan tumbuhan adalah 51/62, kemungkinan terpilih berkaki dua atau pemakan tumbuhan adalah 11/62, dan tidak mungkin terpilih hewan tanpa kaki yang pemakan segala ataupun pemakan tumbuhan yang berkaki. Jika di antara hewan tanpa kaki dipilih secara acak, kemungkinan didapatkan hewan yang pemakan tumbuhan adalah 1/2. Terakhir, peluang didapatkan hewan tanpa kaki atau pemakan tumbuhan adalah 1/31. Berapa peluang mendapatkan hewan berkaki empat? ... {tuliskan dalam bentuk angka} Sesi 2 : Bidang Informatika/Komputer Halaman 6 dari 16 OSP 2014 Olimpiade Sains Tingkat Provinsi 2014 Bagian Pertanyaan Algoritmika (23 pertanyaan) 26. Perhatikan potongan program berikut! var i, j, total : integer; begin total := 0; for i := 1 to 100 do for j := 1 to 100 do total := total + i - j; writeln(total); end. Berapakah nilai total di akhir program? … {tuliskan angkanya} Berikut adalah potongan kode program untuk soal nomor 27 dan 28. function cimi(x,y:integer):integer; begin if (x + y = 0) then begin cimi := 0; end else if (x > y) then begin cimi := y + cimi(x-1,y); end else begin cimi := x + cimi(x,y-1); end; end; 27. Berapakah nilai dari fungsi cimi(5,7)? ... {tuliskan angkanya} 28. Berapakah nilai dari fungsi cimi(29,13)? ... {tuliskan angkanya} Sesi 2 : Bidang Informatika/Komputer Halaman 7 dari 16 OSP 2014 Olimpiade Sains Tingkat Provinsi 2014 Berikut adalah potongan kode program untuk soal nomor 29 dan 30. function blossom(x : integer) : integer; var ans,i : integer; begin ans := 0; for i := 1 to x do begin ans := ans + i; end; blossom := ans; end; function bubble(x : integer) : integer; var ans,i : integer; begin ans := 0; for i := 1 to x do begin ans := ans + blossom(i); end; bubble := ans; end; function buttercup(x : integer) : integer; var ans,i : integer; begin ans := 0; for i := 1 to x do begin ans := ans + bubble(i); end; buttercup := ans; end; 29. Berapakah nilai dari buttercup(3)? ... {tuliskan angkanya} 30. Berapakah nilai dari buttercup(6)? ... {tuliskan angkanya} Berikut adalah potongan kode program untuk soal nomor 31 dan 32. function kandang(ayam, kambing:integer):integer; var rumput, sapi: integer; begin rumput:=(kambing-ayam) div 3; sapi:=rumput*2; if ayam > kambing then kandang:= 0 else if (kambing-ayam < 3) then kandang:= 2*(kambing-ayam) else kandang:= kandang(ayam,ayam+rumput)+ kandang(ayam+rumput,ayam+sapi)+ kandang(ayam+sapi,kambing); end; Sesi 2 : Bidang Informatika/Komputer Halaman 8 dari 16 OSP 2014 Olimpiade Sains Tingkat Provinsi 2014 31. Berapakah nilai dari kandang(2,6)? ... {tuliskan angkanya} 32. Berapakah nilai dari kandang(2014,3021)? ... {tuliskan angkanya} Berikut adalah potongan kode program untuk soal nomor 33 dan 34 var i,j,x,baa:longint; begin x:=0; baa:=10; for i:=1 to baa do begin for j:= 1 to i do begin if i mod 2=1 then x:=x-j else x:=x+j; end; end; writeln(x); end. 33. Apakah keluaran dari program di atas? ... {tuliskan angkanya} 34. Jika nilai baa pada awalnya diganti menjadi baa:=1000; maka keluaran program menjadi … {tuliskan angkanya} Berikut adalah potongan kode program untuk soal nomor 35 dan 36 var x,n,lala,lili,i:integer; begin x:=7; n:=x; lala:=10; lili:=12345; for i:=0 to lili do begin x:=(x*n) mod lala; end; writeln(x); end. 35. Apakah output dari program di atas ? ... {tuliskan angkanya} 36. Apabila pada baris ke-4 diganti lala:=100; dan x bernilai awal 9, maka, output apa yang akan dihasilkan? ... {tuliskan angkanya} Sesi 2 : Bidang Informatika/Komputer Halaman 9 dari 16 OSP 2014 Olimpiade Sains Tingkat Provinsi 2014 Berikut adalah potongan kode program untuk soal nomor 37 dan 38 var x:integer; function lala(lili:integer):integer; var abc,i:integer; begin abc:=0; if (lili mod 5 = 0) then begin for i:=1 to 7 do abc:=abc+lala(lili div 5); end else if (lili mod 3 = 0) then begin for i:=1 to 5 do abc:=abc+lala(lili div 3); end else if (lili mod 2 = 0) then begin abc:=lala(lili div 2)+lala(lili div 2); end; if (lili=1) then lala:=1 else lala:=abc; end; begin x:=25; writeln(lala(x)); end. 37. Apakah output dari program di atas ? ... {tuliskan angkanya} 38. Apabila x bernilai 35, maka apakah output yang dihasilkan? ... {tuliskan angkanya} Perhatikan potongan program di bawah ini! var aku,sayang,kamu:integer; begin aku:=1; sayang:=0; kamu:=1; while (sayang<=100) do begin aku:=aku+kamu; inc(sayang); inc(kamu); inc(kamu); end; writeln(aku); end. 39. Apakah output yang akan dihasilkan? ... {tuliskan angkanya} Sesi 2 : Bidang Informatika/Komputer Halaman 10 dari 16 OSP 2014 Olimpiade Sains Tingkat Provinsi 2014 Perhatikan potongan program di bawah ini! var i,j:integer; lala:boolean; begin for i:=2 to 100 do begin lala:=true; j:=2; while (j*j<=i) do begin if (i mod j = 0) then lala:=false; inc(j); end; if (lala=true) then write(i); end; end. 40. Apabila masing-masing digit dari seluruh output dijumlahkan, berapakah hasil penjumlahan digit-digit tersebut? ... {tuliskan angkanya} Perhatikan potongan program di bawah ini! function iseng(x, y:integer):integer; begin if (y <= 0) then iseng := x else if (y mod 2 = 0) then iseng := iseng(x-y, y-1) else iseng := iseng(x+2*y, y-1); end; 41. Berapakah hasil yang dikembalikan fungsi tersebut pada pemanggilan iseng(500,100)? ... {tuliskan angkanya} Berikut adalah potongan kode program untuk soal nomor 42 dan 43 count := 0; for i := 1 to n do begin x := i; while (x > 0) do begin if (x mod 10 = 1) then inc(count); x := x div 10; end; end; writeln(count); Sesi 2 : Bidang Informatika/Komputer Halaman 11 dari 16 OSP 2014 Olimpiade Sains Tingkat Provinsi 2014 42. Apakah output dari program apabila n = 12? ... {tuliskan angkanya} 43. Apakah output dari program apabila n = 10000? ... {tuliskan angkanya} Berikut adalah potongan kode program untuk soal nomor 44 dan 45 function gembel(x,y : integer) : integer; begin if y=0 then gembel := x else gembel := gembel(y,x mod y); end; function wedhus(n : integer) : integer; var pedhet : integer; begin pedhet := 0; for i:= n-1 downto 1 do begin if gembel(n,i)=1 then pedhet := pedhet+1; end; wedhus := pedhet; end; 44. Jika pada program utama terdapat statement untuk mencetak hasil dari wedhus(30), maka output yang ditampilkan adalah ... {tuliskan angkanya} 45. Jika p adalah suatu bilangan prima, x adalah bilangan bulat positif, dan pangkat(p,x) adalah fungsi p pangkat x (px), maka fungsi wedhus(pangkat(p,x)) akan menghasilkan output sesuai dengan rumus .... {tuliskan rumusnya sesederhana mungkin} (Gunakan variabel p, x, dan fungsi pangkat). Sesi 2 : Bidang Informatika/Komputer Halaman 12 dari 16 OSP 2014 Olimpiade Sains Tingkat Provinsi 2014 Berikut adalah potongan kode program untuk soal nomor 46 dan 47 var i,j: integer; var board: array[0..5] of longint; function kepo():integer; var n:integer = 0; begin for i := 5 downto 0 do begin n := n shl 1; n := n + (board[i] mod 2); end; kepo:=n; end; procedure tambah(); begin for i := 0 to 17 do for j := 0 to 5 do board[j] := board[j] + sqr(j+i); end; begin for i := 0 to 5 do board[i] := i; tambah(); writeln(kepo()); end. 46. Berapakah output yang dihasilkan bila program tersebut dijalankan? ... {tuliskan angkanya} 47. Berapakah nilai board[1] pada akhir program? ... {tuliskan angkanya} Sesi 2 : Bidang Informatika/Komputer Halaman 13 dari 16 OSP 2014 Olimpiade Sains Tingkat Provinsi 2014 Perhatikan potongan program di bawah ini! var data1 : array[1..10] of integer = (4,11,2,5,1,9,7,5,6,8); data2,data3 : array[1..10] of integer; i : integer; begin for i:= 1 to 10 do data2[i] := 1; for i:= 1 to 10 do inc(data2[data1[i]]); for i:= 2 to 10 do data2[i] := data2[i] + data2[i-1]; for i:= 10 downto 1 do begin data3[data2[data1[i]]] := data1[i]; dec(data2[data1[i]]); end; for i:= 1 to 10 do write(data3[i]); end. 48. Keluaran dari program di atas adalah .... {tuliskan angkanya} Sesi 2 : Bidang Informatika/Komputer Halaman 14 dari 16 OSP 2014 Olimpiade Sains Tingkat Provinsi 2014 Bagian Pemrograman (2 pertanyaan) Untuk menjawab soal pemrograman, perhatikan beberapa hal berikut: 1. Diberikan suatu persoalan, dan Anda diminta menuliskan program komputer dengan menggunakan pseudopascal atau bahasa pemrograman Pascal, C, atau C++. 2. Program komputer atau pseudopascal yang ditulis harus dapat menghasilkan output yang diminta dengan batasan yang sudah ditentukan. 3. Setiap persoalan terdiri atas deskripsi soal, batasan (waktu eksekusi, input, dan output), contoh input, dan contoh output. 4. Dalam pemrograman komputer, diasumsikan bahwa satu detik waktu eksekusi setara dengan perulangan 103 kali instruksi. 49. JUMLAH DERET Deskripsi: Pada suatu hari, Pak Dengklek menemukan suatu pola penjumlahan dari N bilangan berikut: 1/3 + 2/21 + 3/91 + 4/273 + …. Dengan menggunakan kalkulator, Pak Dengklek mulai menghitung. Untuk N=1, dihitung 1/3=0.33333. Untuk N=2, dihitung 1/3+2/21=0.42857. Nah, Pak Dengklek mulai pusing jika menghitung untuk N=1000000 (satu juta). Untuk itu, Pak Dengklek minta bantuan Anda membuatkan program menghitung deret tersebut. Batasan: Waktu eksekusi: 1 detik Input: Input berupa sebuah bilangan bulat N dengan batasan 1<N<107. Output: Sebuah bilangan Riil hasil perhitungan jumlah deret dari N bilangan, yang ditulis dengan 5 digit desimal. Contoh Input: 5 Contoh Output: 0.48387 Sesi 2 : Bidang Informatika/Komputer Halaman 15 dari 16 OSP 2014 Olimpiade Sains Tingkat Provinsi 2014 50. MEMOTONG PIPA Deskripsi: Pak Dengklek memiliki pipa sepanjang N meter, dan dia ingin memotongnya menjadi beberapa bagian sebanyak-banyaknya. Setiap potongan pipa harus memiliki panjang p meter, dimana 1<p<N, dan p adalah bilangan bulat. Hal ini menunjukkan bahwa panjang minimal potongan pipa adalah 1 meter. Disyaratkan bahwa tidak ada 3 potongan pipa manapun yang dapat membentuk segitiga. Pak Dengklek meminta bantuan Anda untuk membuat program menghitung maksimum banyaknya potongan pipa sesuai dengan syarat-syarat tersebut. Batasan: Waktu eksekusi: 1 detik Input: Input berupa sebuah bilangan bulat N yang menunjukkan panjang pipa dalam satuan meter, dengan batasan 1<N<105. Output: Sebuah bilangan bulat banyaknya potongan pipa sesuai persyaratan dalam deskripsi soal. Contoh Input: 7 Contoh Output: 4 SELAMAT MENGERJAKAN Sesi 2 : Bidang Informatika/Komputer Halaman 16 dari 16 OSP 2014 Hak Cipta Dilindungi Undang-undang SOAL UJIAN SELEKSI CALON PESERTA OLIMPIADE SAINS NASIONAL 2015 TINGKAT PROVINSI INFORMATIKA/KOMPUTER SESI-2 Bagian Tes Analitika & Algoritmika Waktu: 160 menit KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN DIREKTORAT JENDERAL PENDIDIKAN MENENGAH DIREKTORAT PEMBINAAN SEKOLAH MENENGAH ATAS TAHUN 2015 KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN DIREKTORAT JENDERAL PENDIDIKAN MENENGAH DIREKTORAT PEMBINAAN SEKOLAH MENENGAH ATAS OLIMPIADE SAINS 2015 TINGKAT PROVINSI BIDANG INFORMATIKA/KOMPUTER Lembar Peraturan dan Peringatan Selama Ujian 50 Soal untuk dikerjakan Selama 160 menit Peserta hanya dibolehkan membawa tanda pengenal, alat tulis dan penghapus saat memasuki ruang ujian. Bagian Informasi Model ujian untuk nomor 1 sd 47 adalah isian singkat. Tuliskan jawaban anda sesingkatsingkatnya pada lembar jawaban di kolom nomor soal yang sesuai. Jika jawaban yang diminta merupakan ANGKA tuliskan dengan ANGKA TANPA SATUAN [Contoh: penulisan angka 5 dengan tulisan “lima” tidak diperkenankan.] Soal nomor 48, 49, dan 50 adalah menyusun program komputer/algoritmika. Soal untuk bagian penyusunan program ini akan disusun dalam bundel yang terpisah yang sekaligus sebagai lembar jawab. Total jumlah soal 50, untuk dikerjakan dalam waktu 160 menit. Notasi algoritma pada soal bagian algoritmika menggunakan pseudo pascal yang pada intinya seperti pascal tetapi tidak serinci pascal karena diutamakan pada konsep logika di dalam algoritma. Halaman-halaman yang berisi pertanyaan ada di halaman no 1 sampai dengan 16. Jika berkas tidak lengkap/rusak/cacat/tak terbaca, mintalah kepada panitia untuk penggantian berkas. Peserta HANYA diperkenankan membawa tanda pengenal serta peralatan tulis, yaitu: pensil, balpoin, pulpen, serta penghapus ke dalam ruang ujian untuk mengerjakan soal. Peralatan lain seperti perangkat elektronik dan perangkat komunikasi tidak diperkenankan dibawa ke dalam ruang ujian. Ujian bersifat closed book. Peserta harus mengerjakan sendiri soal tanpa dibantu oleh pihak lain maupun memanfaatkan perangkat lain ataupun buku/catatan. Peserta yang melakukan pelanggaran akan dibatalkan dari keikutsertaan ujian dan dinyatakan gugur. Berkas soal BOLEH digunakan untuk coretan tetapi TIDAK BOLEH dilepas dari bundelannya. Jika bundelan lepas secara tidak disengaja, pengawas diharapkan membundelnya kembali atau diganti dengan berkas baru. Berkas soal TIDAK BOLEH dibawa pulang dan panitia setempat harus menghancurkannya atau menyimpannya hingga seluruh propinsi di Indonesia selesai melaksanakan OSP ini. Olimpiade Sains Tingkat Provinsi 2015 Bagian Pertanyaan Analitika/Logika (30 pertanyaan) 1. Raja Putih akan memberikan penghargaan kepada 10 pion. Raja akan memberikan 3 jenis penghargaan, yaitu: a. Penghargaan Pion Jujur (PPJ) kepada 6 pion paling jujur. b. Penghargaan Pion Kuat (PPK) kepada 8 pion paling kuat. c. Penghargaan Pion Lucu (PPL) kepada 8 pion paling lucu. Setiap pion dapat menerima lebih dari 1 penghargaan. Pion yang mendapatkan ketiga perhargaan sekaligus akan dinaikkan pangkatnya menjadi benteng. Berapa jumlah minimal pion yang pasti naik pangkat? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 2. Kuda-kuda milik raja hitam sedang makan di suatu papan catur berukuran 4 x 4 petak. Semua kuda milik raja hitam adalah kuda perang yang akan menyerang apapun yang terletak pada daerah serang mereka. Jika kuda terletak pada posisi (x,y), maka daerah serang kuda tersebut adalah petak pada posisi (x+1,y+2),(x-1,y+2),(x+1,y-2),(x-1,y-2),(x+2,y+1),(x-2,y+1),(x+2,y-1), dan (x-2,y-1). Dengan catatan posisi-posisi tersebut berada dalam area papan catur. Para pengawal kerajaan telah mengatur letak tiap kuda sehingga tidak ada satupun kuda yang akan saling menyerang. Berapa jumlah maksimal kuda milik raja hitam? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 3. Harga Bahan Bakar Minyak (BBM) di sebuah negara naik sebesar 25%. Beberapa hari kemudian, harga BBM di negara tersebut turun sebesar 20%. Apakah harga BBM setelah mengalami penurunan menjadi LEBIH MURAH, LEBIH MAHAL, atau SAMA DENGAN harga BBM sebelum mengalami kenaikan? Jawaban: ……………. {tuliskan salah satu dari tiga pilihan: LEBIH MURAH/LEBIH MAHAL/SAMA DENGAN} 4. Sebelas tim sepak bola akan bertanding satu dengan yang lain dalam sebuah turnamen. Setiap tim akan bertanding dengan sepuluh tim yang lain sebanyak tepat satu kali. Tim yang menang dalam sebuah pertandingan akan mendapatkan 5 poin, sedangkan yang kalah mendapatkan 0 poin. Bila seri maka kedua tim akan mendapatkan 1 buah poin. Berapa banyak total point yang mungkin terjadi jika jumlah dari poin yang didapatkan oleh semua tim tersebut antara 100 sampai dengan 210? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 5. Di sebuah desa, tinggallah seorang gadis cantik yang hobi melompat-lompat. Di suatu pagi yang cerah, sang gadis akan berangkat ke sekolah dengan berjalan atau melompat-lompat. Sesi 2 : Bidang Informatika/Komputer Halaman 1 dari 16 OSP 2015 Olimpiade Sains Tingkat Provinsi 2015 Sekolah Rumah Gambar di atas adalah peta desa dimana sang gadis cantik tinggal. Peta dinyatakan dalam petakpetak 6x6. Sekolah sang gadis terletak di petak [6,6], sedangkan rumah tempat tinggal sang gadis terletak di petak [1,1]. Dari suatu petak, sang gadis boleh memilih antara berjalan sejauh 1 petak ke arah utara atau timur, atau melompat sejauh 2 petak ke arah utara atau timur. Ada berapa cara agar sang gadis bisa sampai ke sekolah dengan selamat tanpa terjebur ke sungai? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 6. Pada suatu hari, Dedew dan Thony sedang bermain sebuah game bilangan. Kedua pemain bergantian mengucapkan bilangan asli secara berurutan (dari 1), hingga permainan berhenti. Jika sebuah bilangan mengandung angka 7, atau merupakan kelipatan 7, maka pemain harus mengucapkan "Up!", bukan bilangannya. Game ini berhenti jika ada pemain yang melakukan kesalahan (mengucapkan "Up!" pada saat yang kurang tepat, atau tidak mengucapkan "Up!" pada saat bilangan itu mengandung angka 7 atau merupakan kelipatan 7). Jika game ini berhenti di bilangan 178, berapa banyak jumlah "Up!" yang telah diucapkan oleh kedua pemain? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 7. Ada 4 buah tanaman yang harus dipanen. Tanaman ke-i memiliki tinggi Ti cm pada hari pertama ketika akan dipanen dan jika tidak dipanen akan menyusut sebanyak Si cm setiap malam hari. Diketahui bahwa: Tanaman ke-i Ti Si 1 30 3 2 20 4 3 10 2 4 25 5 Artinya, apabila tanaman ke-1 dipanen pada hari ke-1, tingginya adalah 30 cm. Apabila dipanen pada hari ke-2, tingginya adalah 27 cm. Apabila dipanen pada hari ke-3, tingginya adalah 24 cm, dan seterusnya. Jika dalam 1 hari hanya dapat memanen habis 1 tanaman saja, berapakah JUMLAH tinggi keempat tanaman hasil panen MAKSIMAL yang mungkin didapat? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} Sesi 2 : Bidang Informatika/Komputer Halaman 2 dari 16 OSP 2015 Olimpiade Sains Tingkat Provinsi 2015 8. Bebek-bebek pak Dengklek membentuk pertemanan seperti diilustrasikan pada gambar di bawah ini, dengan bulatan hitam adalah bebek dan garis adalah hubungan pertemanan antara dua bebek A Pak Dengklek biasa memberikan berita ke salah satu bebek, dan berita tersebut menyebar melalui hubungan pertemanan. Ada sejumlah bebek yang jika keluar dari hubungan pertemanan mengakibatkan terputusnya komunikasi. Contoh: Jika A meninggalkan pertemanan, akan mengakibatkan terputusnya komunikasi sejumlah bebek. Untuk menghindari hal tersebut, pak Dengklek meminta para bebek untuk menambah hubungan pertemanan. Berapa minimal hubungan pertemanan baru yang perlu dibuat supaya hubungan komunikasi tetap terjaga ketika salah satu bebek meninggalkan kelompok tersebut. Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} Berikut adalah deskripsi untuk soal nomor 9 dan 10 Raja putih baru saja mendapatkan jenis pasukan baru yaitu 150 ekor Naga. Naga menyerang dengan cara menyemburkan api atau menyemburkan es. Agar dapat menyemburkan api, sebelumnya naga harus diberi makan dengan daging. Jika naga diberi makan sayuran maka Naga akan menyemburkan es. Ada 3 jenis daging yang dapat dimakan oleh naga yaitu; Daging sapi, ayam, bebek. Diketahui ada 60 naga yang menyukai daging sapi, 72 naga yang menyukai daging ayam, 80 naga yang menyukai daging bebek, dan 7 naga vegetarian yang tidak makan daging (menyemburkan es). 9. Jika ada 55 naga yang menyukai daging sapi dan bebek, berapa jumlah naga yang hanya menyukai daging ayam? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 10. Jika ternyata ada 9 naga yang yang tidak makan daging maupun sayuran (mereka hanya minum), dan ada 40 naga yang menyukai daging ayam dan bebek, berapa jumlah naga yang menyukai daging sapi dan (bebek atau ayam)? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} Sesi 2 : Bidang Informatika/Komputer Halaman 3 dari 16 OSP 2015 Olimpiade Sains Tingkat Provinsi 2015 11. Pak Dengklek sedang membagi kertas ujian di kelasnya. Tumpukan kertas sebanding banyaknya lembar kertas ujian. Karena malas, Pak Dengklek langsung memberikan sebuah tumpukan kertas ujian ke seorang murid. Kemudia Pak Dengklek menyuruh murid itu untuk mencari kertas ujiannya sendiri, dan membagi tumpukan kertas ujian itu menjadi dua tumpukan yang sama tinggi seusai murid itu mendapatkan kertas ujiannya. Kedua tumpukan itu diberikan ke dua murid lain yang belum mendapatkan kertas ujiannya. Jika tinggi tumpukan adalah x, maka seorang murid perlu x detik untuk mendapatkan kertas ujiannya dari tumpukan tersebut. Lalu, seorang murid perlu 10 detik untuk menyerahkan dua tumpukan ke dua murid lain. Jika Dedew, seorang murid Pak Dengklek, menerima hanya 1 lembar kertas dan dia telah menunggu selama 50 detik, berapa banyak murid Pak Dengklek? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 12. Pak Dengklek, Bu Dengklek, Ammar dan Rakina ingin melewati sebuah jembatan. Karena sudah berumur 1000 tahun, jembatan tersebut hanya bisa dilewati oleh maksimal 2 orang. Karena hari sudah malam, maka untuk dapat melewati jembatan tersebut diperlukan senter sebagai sumber penerangan. Namun, mereka hanya membawa sebuah senter. Diketahui untuk melewati jembatan tersebut Pak Dengklek membutuhkan waktu selama 10 detik, Bu Dengklek membutuhkan waktu 5 detik, Ammar membutuhkan waktu 2 detik dan Rakina membutuhkan waktu selama 1 detik. Apabila terdapat 2 orang yang melewati jembatan disaat yang bersamaan, maka orang yang lebih cepat akan menyesuaikan kecepatannya dengan orang yang lebih lambat. Waktu minimal yang dibutuhkan untuk mereka melewati jembatan tersebut adalah ….. detik {tuliskan jawaban dalam bentuk angka saja} 13. Ada berapa banyak angka diantara 0-80 yang memiliki tepat 4 angka 1 dalam representasi binernya? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} Berikut adalah deskripsi untuk soal nomor 14 dan 15 Vin membawa sekarung tromino berbentuk L dan sebuah monomino. Ia lalu menantang Van untuk menempatkan tromino dan monomino tersebut sehingga papan itu tertutupi penuh. Sebelum Van mulai, Vin ingin tahu berapa banyak petak di papan tersebut yang mungkin akan ditutupi oleh monomino? Jika papan Vin berukuran 2x2, ada 4 petak berbeda yang mungkin ditutupi oleh monomino: Yang diwarnai abu adalah sebuah tromino berbentuk L, dan yang diwarnai putih adalah sebuah monomino. 14. Petak Vin berukuran 5x5, Van akan menempatkan 8 tromino dan sebuah monomino, berapa banyak petak berbeda di papan tersebut yang mungkin ditutupi oleh monomino? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} Sesi 2 : Bidang Informatika/Komputer Halaman 4 dari 16 OSP 2015 Olimpiade Sains Tingkat Provinsi 2015 15. Petak Vin berukuran 8x8, Van akan menempatkan 21 tromino dan sebuah monomino, berapa banyak petak berbeda di papan tersebut yang mungkin ditutupi oleh monomino? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} Berikut adalah deskripsi untuk soal nomor 16 dan 17 Ammar sangat gemar makan. Sebuah restaurant menyediakan 3 jenis makanan yaitu ayam, kangkung dan sambal. Tidak hanya gemar makan, Ammar juga gemar bermain teka-teki. Ammar membuat beberapa peraturan untuk dirinya sendiri saat makan. Sambal hanya boleh dimakan setelah memakan ayam atau kangkung. Kangkung hanya boleh dimakan setelah memakan ayam. Ayam boleh dimakan setelah memakan ayam atau kangkung atau sambal. Untuk mengawali rangkaian makannya, Ammar harus memakan ayam. 16. Jika Ammar memesan 3 ayam dan 2 kangkung, banyaknya kemungkinan Ammar menghabiskan makanannya adalah ...... {tuliskan jawaban dalam bentuk angka saja} 17. Jika Ammar memesan 3 ayam, 2 kangkung dan 2 sambal, banyaknya kemungkinan Ammar menghabiskan makanannya adalah …….. {tuliskan jawaban dalam bentuk angka saja} 18. Pak Dengklek akan membagikan 20 bingkisan kepada 4 orang temannya, Van, Vin, Va, Vi, tentunya masing-masing setidaknya mendapat 1 bingkisan, uniknya Pak Dengklek tidak ingin ada sebuah bilangan bulat x (x > 1), yang dapat habis membagi banyak bingkisan yang diterima Van, Vin, Va, dan Vi. Berapa banyak cara Pak Denglek dapat membagi bingkisannya? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 19. Pak Dengklek sedang menyusun ubin untuk menutupi lantai berukuran 4x7 dengan ubin berukuran 1x2. Ubin boleh disusun vertikal atau horisontal tanpa memotongnya. Ada berapa banyak cara untuk memenuhi lantai tersebut? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 20. Pada kesempatan kali ini, Astrid dan Bonita (nama samaran, bukan nama asli) sedang bosan dan menciptakan sebuah permainan baru. Game nya sangat simple. Mula-mula disediakan N buah batu, lalu pemain secara bergantian mengambil beberapa batu. Pemain yang kehabisan langkah (kehabisan batu) dinyatakan kalah. Namun kali ini aturan permainan ini berbeda. Dalam 1 giliran, pemain hanya boleh mengambil sejumlah tepat 3, 5, 7, atau 9 batu. Karena Astrid lebih tua dari Bonita, Astrid mendapat kesempatan giliran pertama. Apabila mereka berdua mampu bermain secara optimal, berapa banyaknya batu (N) dengan N lebih besar dari 1000, agar Bonita menang di dalam permainan tersebut? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} Sesi 2 : Bidang Informatika/Komputer Halaman 5 dari 16 OSP 2015 Olimpiade Sains Tingkat Provinsi 2015 21. Diberikan deret bilangan: 2 5 4 15 8 45 X Y Berapakah nilai X dan nilai Y? Jawaban: X = ….. dan Y = ….. Tuliskan jawaban dengan mengganti …… dengan angka. Contoh jika X=10 dan Y=10, maka anda menulis: X=10 dan Y=10 22. Temukan suatu bilangan 10 digit sehingga: Digit pertama adalah banyaknya angka 0 pada bilangan tersebut Digit kedua adalah banyaknya angka 1 pada bilangan tersebut Digit ketiga adalah banyaknya angka 2 pada bilangan tersebut … Digit kesepuluh adalah banyaknya angka 9 pada bilangan tersebut Jawaban: ……………. {tuliskan jawaban dalam bentuk angka 10 digit} Berikut adalah deskripsi untuk soal nomor 23 dan 24 Pada suatu hari, bebek-bebek Pak Dengklek yang bernama Kwak, Kwik, Kwek, dan Kwok ingin mengikuti lomba lari. Karena sudah bekerja keras, Pak Dengklek ingin menghadiahkan sepasang sepatu baru untuk masing-masing bebek-bebeknya. Akan tetapi, masing-masing bebek memiliki warna kesukaan yang berbeda-beda. Berikut ini adalah beberapa informasi terakhir yang diingat Pak Dengklek: Tinggi bebek-bebek Pak Dengklek adalah 30 cm, 31 cm, 32 cm, dan 33 cm (sayangnya Pak Dengklek lupa urutan tinggi untuk Kwak, Kwik, Kwek, dan Kwok) Warna-warna yang disukai Pak Dengklek adalah merah, putih, hijau, hitam (lagi-lagi Pak Dengklek lupa urutan warna kesukaan untuk Kwak, Kwik, Kwek, dan Kwok) Tinggi Kwek yang menyukai warna hijau adalah 32 cm, yang juga lebih tinggi dari Kwik Bebek yang menyukai warna merah lebih tinggi dari Kwak Bebek yang menyukai warna hitam memiliki tinggi 31 cm Kwik tidak menyukai warna putih Kwok menyukai warna merah 23. Bagaimana urutan tinggi bebek-bebek Pak Dengklek diurutkan dari yang paling pendek? Jawaban: ………, ..……., ………, ………. {tuliskan jawaban nama-nama bebek yang dipisahkan tanda koma dan spasi} Contoh: abc,def, ghi, jkl 24. Siapa bebek yang menyukai warna putih? Jawaban: ……………. {tuliskan jawaban sebuah nama bebek} Sesi 2 : Bidang Informatika/Komputer Halaman 6 dari 16 OSP 2015 Olimpiade Sains Tingkat Provinsi 2015 25. Seorang peternak memiliki sejumlah binatang yang terdiri atas kelinci, kuda, dan sapi. Pernyataan yang diketahui adalah: Semua binatang peternak tersebut, kecuali 4 ekor, adalah kelinci Semua binatang peternak tersebut, kecuali 4 ekor, adalah kuda Semua binatang peternak tersebut, kecuali 4 ekor, adalah sapi Berapa banyak binatang yang dimiliki peternak tersebut? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 26. Bebek Pak Dengklek berulang tahun. Pak Dengklek memberi kue ulang tahun berbentuk tanda tambah: Berapa maksimal potongan kue yang dapat peroleh Pak Dengklek dengan melakukan 2x pemotongan. Satu pemotongan harus berupa garis lurus, dan tidak boleh memindahkan posisi kue? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 27. Diberikan dua buah angka A dan B dengan ketentuan bilangan A dan B merupakan bilangan real. Tulislah rumusan yang menghasilkan nilai terbesar dari dua bilangan tersebut dengan operator bilangan biasa (+, -, ×, ÷) dan fungsi ABS (nilai absolut 2 buah nilai real) tanpa memakai operator perbandingan (<, >, =, ≤, ≥, ≠). Jawaban: ……………. {tuliskan jawaban dalam rumus}. Contoh: abs(C+B)-AxB÷C 28. Di sebuah perumahan yang rumah-rumahnya tersusun berjajar, terdapat 8 rumah. Beberapa keterangan yang terdapat di dalam perumahan tersebut yakni: Rumah D dan E terletak tepat bersebelahan Di antara Rumah A dan F terdapat 3 rumah lainnya. Rumah H berada di sebelah barat Rumah G Rumah G berjarak 5 rumah dari Rumah C Rumah B merupakan rumah kedua paling barat. Rumah A tepat terletak di tengah-tengah Rumah E dan H. Sebutkan urutan rumah tersebut dari rumah yang letaknya paling barat hingga paling timur. Jawaban: ……………. {tuliskan jawaban berupa urutan huruf nama rumah yang dipisahkan dengan spasi}. Contoh: A B C D E F G H I J Sesi 2 : Bidang Informatika/Komputer Halaman 7 dari 16 OSP 2015 Olimpiade Sains Tingkat Provinsi 2015 29. Athin dan Ayos sedang bermain tebak-tebakan bilangan dan terjadilah percakapan berikut: Athin : "Aku memikirkan sebuah bilangan bulat antara 1 sampai dengan 10 " Ayos : "Apakah bilangan tersebut bilangan prima?" Athin : "...." (Athin menjawab dengan ya / tidak, tapi hanya Ayos yang mendengar ucapannya) Ayos : "Apakah bilangan tersebut bilangan ganjil?" Athin : "...." (Athin menjawab dengan ya / tidak, tapi hanya Ayos yang mendengar ucapannya) Ayos : "Oh, dengan ini barulah aku tahu bilangan yang kamu tebak adalah X" Athin : Ya Benar, X adalah ....... {tuliskan jawaban dalam bentuk angka saja} Catatan: 1 bukan bilangan prima. 30. Athin dan Ayos sedang bermain tebak-tebakan bilangan dan terjadilah percakapan berikut: Athin : "Aku memikirkan sebuah bilangan bulat antara 1 sampai dengan 10" Ayos : "Apakah bilangan tersebut bilangan prima?" Athin : "...." (Athin menjawab dengan ya / tidak, tapi hanya Ayos yang mendengar ucapannya) Ayos : "Apakah bilangan tersebut bilangan ganjil?" Athin : "...." (Athin menjawab dengan ya / tidak, tapi hanya Ayos yang mendengar ucapannya) Ayos : "Apakah bilangan tersebut huruf depannya S?" Athin : "...." (Athin menjawab dengan ya / tidak, tapi hanya Ayos yang mendengar ucapannya) Ayos : "Oh, dengan ini barulah aku tahu bilangan yang kamu tebak adalah Y" Athin : Ya, bilangan Y adalah ....... {tuliskan jawaban dalam bentuk angka saja} Catatan : 1 bukan bilangan prima. Sesi 2 : Bidang Informatika/Komputer Halaman 8 dari 16 OSP 2015 Olimpiade Sains Tingkat Provinsi 2015 Bagian Pertanyaan Algoritmika (17 pertanyaan) 31. Tuliskan output dari program pseudo code di bawah ini jika input x = 9. {tuliskan jawabannya sesuai dengan output yang dihasilkan} function jarak(km:integer): integer; begin if (km <= 2) then jarak := 1 else jarak := jarak(km-1) + jarak(km-2); end; var i, x :integer; begin readln(x); for i := x downto 1 do write(jarak(i), ' '); end. 32. Tuliskan output dari program pseudo code di bawah ini jika input b = 4 dan k = 27. {tuliskan jawabannya sesuai dengan output yang dihasilkan} var b, k : int64; s : int64; i : byte; begin readln(b); readln(k); k := k - b; s := 1; for i := 1 to 61 do s := s * 2; while k > 0 do begin if (k >= s) then begin write(s, ’ ‘); k := k mod s; end; s := s div 2; end; end. Sesi 2 : Bidang Informatika/Komputer Halaman 9 dari 16 OSP 2015 Olimpiade Sains Tingkat Provinsi 2015 33. Tuliskan output dari program pseudo code di bawah ini jika input n = 11 dan k = 3. {tuliskan jawabannya sesuai dengan output yang dihasilkan} var n, k, i : byte; begin readln(n, k); for i := 1 to n do begin if i mod (k+1) = 0 then write('* ') else write(i, ' '); end; writeln(‘#’); end. 34. Tuliskan output dari program pseudo code di bawah ini. {tuliskan jawabannya sesuai dengan output yang dihasilkan} var ss : string; i,j,sz : integer; boo : boolean; tmp : char; begin ss := 'TOKITOKI'; i := 1; sz := length(ss); {length adalah fungsi untuk mengembalikan panjang string} while(i<=sz) do begin j:=i; while ( (ss[j] <> ss[j+1]) and (j < sz) ) do begin tmp := ss[j]; ss[j]:= ss[j+1]; ss[j+1]:= tmp; j := j + 1; end; i := i + 1; end; writeln(ss); end. Sesi 2 : Bidang Informatika/Komputer Halaman 10 dari 16 OSP 2015 Olimpiade Sains Tingkat Provinsi 2015 35. Tuliskan output dari program pseudo code di bawah ini jika input x = 20 dan y = 14. {tuliskan jawabannya sesuai dengan output yang dihasilkan} readln(x,y); z := 0; while (x > y) do begin z := z + x; z := z - y; x := x - 2; y := y - 1; end; writeln(z); 36. Tuliskan output dari program pseudo code di bawah ini. {tuliskan jawabannya sesuai dengan output yang dihasilkan} begin lala:=10; x:=2; haha:=0; for i:=1 to lala do begin j:=i; lili:=true; while (j>1) do begin if (j mod x = 1) then lili:=false; j:=j div x; end; if (lili=true) then haha:=haha+i; else haha:=haha+1; end; writeln(haha); end. Sesi 2 : Bidang Informatika/Komputer Halaman 11 dari 16 OSP 2015 Olimpiade Sains Tingkat Provinsi 2015 Berikut adalah potongan program pseudo code untuk soal nomor 37 dan 38. var a : array [1..100000] of longint; i, j, n : longint; begin readln(n); for i := 1 to n do a[i] := 0; for i := 2 to n do begin if (a[i] = 0) then begin j := i; while (j <= n) do begin a[j] := a[j] + 1; j := j + i; end; end; end; end. 37. Apabila n = 16, berapa nilai dari elemen array a[9]? {tuliskan jawaban dalam bentuk angka saja} 38. Apabila n = 300, berapa nilai i terkecil dimana 1 <= i <= n dan a[i] >= 11? {tuliskan jawaban dalam bentuk angka saja} Berikut adalah potongan program pseudo code untuk soal nomor 39 dan 40. const satu=1; var lala, x, haha, i:integer; begin lala:=10; x:=10; haha:=0; for i:=0 to x do begin if ((lala & (satu shl i)) <> 0) then haha:=haha+1; end; { A shl B adalah operator menggeser bit-bit A ke kiri sejumlah B kali} writeln(haha); end. Sesi 2 : Bidang Informatika/Komputer Halaman 12 dari 16 OSP 2015 Olimpiade Sains Tingkat Provinsi 2015 Keterangan: Operator '&' melambangkan operasi bitwise AND dimana operasi tersebut akan membandingkan setiap bit biner dari dua buah bilangan bulat/integer dengan mengikuti kaidah AND (bernilai 1 jika kedua operan bernilai 1 dan 0 jika tidak). Contoh: 5 & 6 = 4. Cara menghitungnya dengan merepresentasikan kedua operan dalam basis biner dan membandingkan setiap digitnya 5 → 101 6 → 110 ---- AND 4 → 100 39. Tuliskan output dari program pseudo code di atas. {tuliskan jawabannya sesuai dengan output yang dihasilkan} 40. Apabila baris keempat dari kode di atas (“lala:=10;”) diubah menjadi "lala:=2000;" dan baris kelima diubah menjadi "x:=30;", maka output dari program pseudo code di atas adalah ..... {tuliskan jawabannya sesuai dengan output yang dihasilkan} 41. Tuliskan output dari program pseudo code di bawah ini. {tuliskan jawabannya sesuai dengan output yang dihasilkan} var a: array[0..15] of integer = (1, 0, 2, 0, 4, 3, 7, 3, 6, 5); b: array[0..7] of integer = (4, 1, 8, 12, 5, c: array[0..15] of integer = (-1, -1, 0, -1, 1, 7, -1, 10, -1, 11, 9); d: array[0..7] of integer = (-1, -1, -1, -1, 0, 3, 2, 6, 2, 5, 14, 15, 13); 2, -1, 3, -1, 6, -1, -1, -1, -1); procedure kemanamana(y, z: integer); var e: integer; begin e := b[y]; d[y] := z; while(e > -1) do begin if(d[a[e]] = -1) then kemanamana(a[e], z + 1); e := c[e]; end; end; begin kemanamana(0, 0); writeln(d[7]); end. Sesi 2 : Bidang Informatika/Komputer Halaman 13 dari 16 OSP 2015 Olimpiade Sains Tingkat Provinsi 2015 42. Penjumlahan dari tiga angka terakhir yang tercetak oleh program pseudo code di bawah adalah ….. {tuliskan jawabannya sesuai dengan output yang dihasilkan} var aku, kamu, dia, saya, anda : integer; begin aku:=2; kamu:=10; for saya:=aku to kamu do begin dia:=saya; for anda := 1 to saya-1 do begin writeln(dia); dia := dia * (saya-anda) div (anda+1); end; end; end. Berikut adalah potongan program pseudo code untuk soal nomor 43 dan 44. function D(X,Y : integer) : integer; begin if (Y = 0) then D := 1 else D := Y+1; end; function C(X,Y : integer) : integer; begin if (Y = 0) then C := X else C := D(X,C(X,Y-1)); end; function B(X,Y : integer) : integer; begin if (Y = 0) then B := 0 else B := C(X,B(X,Y-1)); end; function A(X,Y : integer) : integer; begin if (Y = 0) then A := 1 else A := B(X,A(X,Y-1)); end; begin writeln(A(4,2)); end. Sesi 2 : Bidang Informatika/Komputer Halaman 14 dari 16 OSP 2015 Olimpiade Sains Tingkat Provinsi 2015 43. Tuliskan output dari program pseudo code di atas. {tuliskan jawabannya sesuai dengan output yang dihasilkan} 44. Jika kode program "writeln(A(4,2));" diganti dengan "writeln(A(3,6));", Tuliskan output dari program pseudo code tersebut. {tuliskan jawabannya sesuai dengan output yang dihasilkan} 45. Tuliskan output dari program pseudo code di bawah ini. {tuliskan jawabannya sesuai dengan output yang dihasilkan} var apaini: array[1..4, 1..10] of char = (('T', 'I', 'M', ' ', 'O', 'L', 'I', 'M', 'P', 'I'), ('A', 'D', 'E', ' ', 'K', 'E', 'G', 'A', 'N', 'T'), ('E', 'N', 'G', 'A', 'N', ' ', 'I', 'N', 'D', 'O'), ('N', 'E', 'S', 'I', 'A', ' ', 'Y', 'E', 'A', '!')); hah: array[1..4] of integer = (1, 0, -1, 0); huh: array[1..4] of integer = (0, 1, 0, -1); hoh: array[1..4, 1..10] of boolean; hihi: integer; function heh(b, y: integer): boolean; begin heh:=((1 <= b) and (b <= 4) and (1 <= y) and (y <= 10)); end; procedure iniapalagi(a, z: integer); var i: integer; b, y: integer; begin hihi := hihi + 1; hoh[a][z] := true; for i := 1 to 4 do begin b := a + hah[i]; y := z + huh[i]; if (heh(b,y)) and (not hoh[b][y]) and (apaini[b][y]<>' ') and (apaini[b][y]<>'E') and (apaini[b][y]<>'T') then iniapalagi(b, y); end; end; begin iniapalagi(1, 3); writeln(hihi); end. Sesi 2 : Bidang Informatika/Komputer Halaman 15 dari 16 OSP 2015 Olimpiade Sains Tingkat Provinsi 2015 Berikut adalah potongan program pseudo code untuk soal nomor 46 dan 47. var mola : array[1..10] of integer = (5,9,4,3,10,1,6,2,7,8); pos : array[1..10] of integer; dah : array[1..10] of boolean; function molamola(): integer; var i, tempe, hihi, skr:integer; m:integer; begin m:=0; for i:=1 to 10 do begin pos[mola[i]] := i; dah[i] := false; end; for i:=1 to 10 do begin if not dah[i] then begin skr := i; repeat dah[skr] := true; hihi := pos[skr]; if not dah[hihi] then begin tempe := mola[skr]; mola[skr] := mola[hihi]; mola[hihi] := tempe; end; skr := hihi; m:=m+1; until dah[skr]; m:=m-1; end; end; molamola:=m; end; 46. Jika pada program utama pseudo code di atas terdapat statement untuk mencetak hasil dari molamola() maka output yang ditampilkan adalah ….. {tuliskan jawabannya sesuai dengan output yang dihasilkan} 47. Berapa nilai mola[5] pada akhir program …… {tuliskan jawabannya sesuai dengan output yang dihasilkan} ~ akhir lembar soal ~ Sesi 2 : Bidang Informatika/Komputer Halaman 16 dari 16 OSP 2015 Hak Cipta Dilindungi Undang-undang SOAL UJIAN SELEKSI CALON PESERTA OLIMPIADE SAINS NASIONAL 2015 TINGKAT PROVINSI INFORMATIKA/KOMPUTER SESI-2 SOAL & LEMBAR JAWAB Bagian Tes Pemrograman Sederhana KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN DIREKTORAT JENDERAL PENDIDIKAN MENENGAH DIREKTORAT PEMBINAAN SEKOLAH MENENGAH ATAS TAHUN 2015 KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN DIREKTORAT JENDERAL PENDIDIKAN MENENGAH DIREKTORAT PEMBINAAN SEKOLAH MENENGAH ATAS OLIMPIADE SAINS 2015 TINGKAT PROVINSI BIDANG INFORMATIKA/KOMPUTER – SESI 2 Bagian Tes Pemrograman Sederhana Lembar Peraturan dan Peringatan Selama Ujian Peserta hanya dibolehkan membawa tanda pengenal, alat tulis dan penghapus saat memasuki ruang ujian. Bagian Informasi Model ujian ini adalah essay. Tuliskan ide penyelesaian dan/atau program/pseudocode langsung pada lembar soal di dalam kotak yang telah disediakan, segala bentuk tulisan yang berada diluar area kotak tidak akan diperiksan/dinilai. Halaman-halaman yang berisi pertanyaan dan lembar jawaban ada di halaman no 1 sampai dengan 6. Jika berkas anda tidak lengkap/rusak/cacat/tak terbaca, mintalah kepada panitia untuk penggantian berkas. Peserta HANYA diperkenankan membawa tanda pengenal serta peralatan tulis, yaitu: pensil, balpoin, pulpen, serta penghapus ke dalam ruang ujian untuk mengerjakan soal. Peralatan lain seperti perangkat elektronik dan perangkat komunikasi tidak diperkenankan dibawa ke dalam ruang ujian. Ujian bersifat closed book. Peserta harus mengerjakan sendiri soal tanpa dibantu oleh pihak lain maupun memanfaatkan perangkat lain ataupun buku/catatan. Peserta yang melakukan pelanggaran akan dibatalkan dari keiutsertaan ujian dan dinyatakan gugur. Berkas soal BOLEH digunakan untuk coretan, kecuali pada area lembar jawaban dan TIDAK BOLEH dilepas dari bundelnya. Jika bundel terlepas secara tidak disengaja, pengawas diharapkan membundelnya kembali atau diganti dengan berkas baru. Berkas soal dan jawaban dikumpulkan lagi kepada pengawas untuk dikoreksi oleh tim juri. Olimpiade Sains Tingkat Provinsi 2015 Bagian Tes Pemrograman Sederhana (3 pertanyaan) Kode/Nama Propinsi : No Urut : Nama Peserta : 1. Berikut ini adalah pseudocode dari operasi penukaran nilai dua variabel yang berbeda: //nilai variabel ‘a’ dan ‘b’ sudah di set temp := a; a := b; b := temp; //nilai variabel ‘a’ dan ‘b’ telah ditukar Nah sekarang kalian harus membuat sebuah pseudocode operasi penukaran nilai dua variabel hanya dengan dua variabel saja. *Hint : artinya kalian hanya boleh memakai variabel ‘a’ dan ‘b’ tanpa tambahan variabel lain seperti ‘temp’ //nilai variabel ‘a’ dan ‘b’ sudah di set ... ... ... //nilai variabel ‘a’ dan ‘b’ telah ditukar IDE PENYELESAIAN SOAL (dalam bahasa Indonesia) : Sesi 2 : Bagian Pemrograman Singkat Halaman 1 dari 6 OSP 2015 Olimpiade Sains Tingkat Provinsi 2015 PROGRAM / PSUDOCODE: Sesi 2 : Bagian Pemrograman Singkat Halaman 2 dari 6 OSP 2015 Olimpiade Sains Tingkat Provinsi 2015 Kode/Nama Propinsi : No Urut : Nama Peserta : 2. Diberikan sebuah string S yang karakternya hanya berupa digit-digit angka. S memiliki panjang minimal 1 karakter dan maksimal 200 karakter. Apabila kita menukar-nukar posisi karakter-karakter pada S, apakah kita dapat menghasilkan sebuah string angka dengan kelipatan 25? Contoh Masukan 0 000000000 521 Contoh Keluaran YA YA YA 659 TIDAK 10 010 758 0561 123456789 123406789 TIDAK YA YA YA YA TIDAK Catatan 0 adalah angka kelipatan 25 000000000 adalah angka kelipatan 25 521 bisa ditukar karakter-karakternya menjadi 125 yang merupakan angka kelipatan 25 659 bisa ditukar karakter-karakternya menjadi 569, 596, 659, 695, 956, dan 965, tetapi tidak ada yang merupakan angka kelipatan 25 010 menjadi 100 758 menjadi 875 0561 menjadi 1650 atau 6150 123456789 salah satunya menjadi 987614325 IDE PENYELESAIAN SOAL (dalam bahasa Indonesia): Sesi 2 : Bagian Pemrograman Singkat Halaman 3 dari 6 OSP 2015 Olimpiade Sains Tingkat Provinsi 2015 PROGRAM / PSUDOCODE: Sesi 2 : Bagian Pemrograman Singkat Halaman 4 dari 6 OSP 2015 Olimpiade Sains Tingkat Provinsi 2015 Kode/Nama Propinsi : No Urut : Nama Peserta : 3. Pak Dengklek memiliki sebuah array berisi N bilangan bulat non-negatif. Pak Dengklek pun menantang Anda untuk memilih angka-angka dari arraynya yang jika dijumlahkan habis dibagi N. Tentu saja angka di suatu index tidak boleh dipilih lebih dari sekali. Apabila hal ini mungkin, beritahu Pak Dengklek berapa banyak angka yang Anda ambil dan apa saja angka-angkanya. Apabila hal ini tidak mungkin, katakan "Tidak mungkin". Format Input : Baris pertama berisi sebuah bilangan bulat N (2 <= N <= 100000) Baris kedua berisi N bilangan bulat non-negatif yang menyatakan isi array Pak Dengklek Format Output : Apabila mungkin, pada baris pertama keluarkan sebuah angka yang menyatakan banyaknya angka yang Anda ambil dari array Pak Dengklek, dan pada baris kedua keluarkan angka-angka yang Anda ambil dipisahkan oleh sebuah spasi. Apabila tidak mungkin, pada baris pertama keluarkan sebuah string "Tidak mungkin" tanpa tanda petik. Contoh Masukan 3 4 1 2 3 4 4 4 Contoh Keluaran 2 4 2 3 4 4 4 IDE PENYELESAIAN SOAL (dalam bahasa Indonesia : Sesi 2 : Bagian Pemrograman Singkat Halaman 5 dari 6 OSP 2015 Olimpiade Sains Tingkat Provinsi 2015 PROGRAM / PSUDOCODE : Sesi 2 : Bagian Pemrograman Singkat Halaman 6 dari 6 OSP 2015 Hak Cipta Dilindungi Undang-undang SOAL UJIAN SELEKSI CALON PESERTA OLIMPIADE SAINS NASIONAL 2016 TINGKAT PROVINSI INFORMATIKA/KOMPUTER SESI-2 Bagian A: Tes Analitika & Algoritmika, dan Bag B: Menyusun Program/Algoritmika Sederhana Waktu: 160 menit KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN DIREKTORAT JENDERAL PENDIDIKAN MENENGAH DIREKTORAT PEMBINAAN SEKOLAH MENENGAH ATAS TAHUN 2016 KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN DIREKTORAT JENDERAL PENDIDIKAN MENENGAH DIREKTORAT PEMBINAAN SEKOLAH MENENGAH ATAS OLIMPIADE SAINS 2016 TINGKAT PROVINSI BIDANG INFORMATIKA/KOMPUTER Lembar Peraturan dan Peringatan Selama Ujian Dikerjakan Selama 160 menit Peserta hanya dibolehkan membawa tanda pengenal, alat tulis dan penghapus saat ujian. Bagian Informasi Model ujian Bagian A: tes Analitika & Algoritmika nomor 1 sd 45 adalah isian singkat. Tuliskan jawaban anda sesingkat-singkatnya pada LJK pada kolom nomor soal yang sesuai. Jika jawaban yang diminta merupakan ANGKA tuliskan dengan ANGKA TANPA SATUAN [Contoh: penulisan angka 5 dengan tulisan “lima” tidak diperkenankan.] Soal Bagian B (3 soal) adalah menyusun program komputer/algoritmika. Lembar jawaban untuk bagian B ini ada di lembar jawab yang terpisah dengan LJK Bagian A. Seluruh soal dikerjakan dalam waktu 160 menit. Notasi algoritma pada soal bagian algoritmika menggunakan pseudo pascal yang pada intinya seperti pascal tetapi tidak serinci pascal karena diutamakan pada konsep logika dari algoritma. Halaman-halaman yang berisi pertanyaan ada di halaman no 1 sampai dengan 14. Jika berkas anda tidak lengkap/rusak/cacat/tak terbaca, mintalah kepada panitia untuk penggantian berkas. Peserta HANYA diperkenankan membawa tanda pengenal serta peralatan tulis, yaitu: pensil, balpoin, pulpen, serta penghapus ke dalam ruang ujian untuk mengerjakan soal. Peralatan lain seperti perangkat elektronik dan perangkat komunikasi tidak diperkenankan dibawa ke dalam ruang ujian. Ujian bersifat closed book. Peserta harus mengerjakan sendiri soal tanpa dibantu oleh pihak lain maupun memanfaatkan perangkat lain ataupun buku/catatan. Peserta yang melakukan pelanggaran akan dibatalkan dari keikutsertaan ujian dan dinyatakan gugur. Berkas soal BOLEH digunakan untuk coretan tetapi TIDAK BOLEH dilepas dari bundelannya. Jika bundelan lepas secara tidak disengaja, pengawas diharapkan membundelnya kembali atau diganti dengan berkas baru. Berkas soal TIDAK BOLEH dibawa pulang dan panitia setempat harus menghancurkannya atau menyimpannya hingga seluruh propinsi di Indonesia selesai melaksanakan OSP ini Bagian A: Pertanyaan Analitika/Logika (30 pertanyaan) 1. Tentukan bilangan bulat positif terkecil x yang memenuhi fungsi f(x) = (4 + x)20 sehingga nilai digit terkanan dari nilai fungsi tersebut adalah 1. Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 2. Gambar sebagai berikut adalah peta jalan antar kota di negeri 1001 Malam. Karena banyak wisatawan yang mengagumi keindahan negeri 1001 Malam, sang raja berencana untuk membangun beberapa jalan tambahan supaya para wisatawan dapat bertamasya mengunjungi setiap kota dengan melewati setiap jalan hanya satu kali saja. Sebuah jalan tambahan yang dibangun hanya dapat menghubungkan tepat dua buah kota, dan dua buah kota dapat dihubungkan oleh lebih dari 1 (satu) jalan. Berapakah minimum banyak jalan tambahan yang perlu dibangun agar seorang wisatawan yang berawal dari sebuah kota dapat menggunakan setiap jalan antar kota tepat sekali (tidak harus kembali ke kota asal)? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 3. Pada suatu hari, terdapat seekor semut yang terperangkap di dalam sebuah kaleng yang terbuka. Semut tersebut mula-mula berada pada posisi awal yaitu titik A, dan ingin mencapai titik keluar (titik B) seperti pada gambar dengan merayap pada dinding kaleng. Jika diketahui jari-jari kaleng adalah 7 cm dan tinggi kaleng adalah 15 cm, berapakah jarak minimum yang perlu ditempuh oleh semut tersebut dari titik A untuk mencapai titik B? Tuliskan hasil jawaban dalam bentuk π (pi) jika perlu. Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 4. Pada sebuah arisan, jumlah orang yang hadir adalah 2016 orang, diberi identitas 1 sampai dengan 2016. Orang-orang tersebut akan dikelompokkan. Orang ke-i akan ditaruh sekompok dengan orang beridentitas i2 dan i3 kecuali jika i2 >2016 atau i3 > 2016 Tentukan berapa banyak kelompok yang ada pada arisan tersebut. Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 5. Pak Dengklek memiliki 6 buah pot bunga yang disusun berjajar dan siap ditanami 3 (tiga) jenis bunga yaitu melati, mawar, dan anggrek di pekarangan rumahnya. Ada berapa banyak cara pengisian 6 pot bunga tersebut sehingga pada 3 buah pot yang bersebelahan yang manapun, tidak ada 3 jenis bunga yang ketiganya berbeda? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 6. Pada sebuah permainan, seorang ksatria mula-mula berada pada posisi (1,1) dan hendak pergi ke posisi (6,6) untuk menyelamatkan seorang putri yang cantik. Setiap petak permainan dapat berisi vitamin atau racun. Petak yang berisi vitamin dilambangkan dengan bilangan positif pada peta, yaitu ramuan yang akan menambah kekuatan ksatria, atau Petak yang berisi racun dilambangkan dengan bilangan negatif pada peta, yaitu ramuan yang akan mengurangi kekuatan ksatria. Sesi 2 : Bidang Informatika/Komputer Halaman 1 dari 14 OSP 2016 Pada permainan ini, ksatria hanya bisa berjalan ke arah timur atau selatan (tidak bisa melangkah secara diagonal). Ksatria tidak pernah boleh kehabisan kekuatan (kekuatan bernilai negatif atau 0) selama permainan berlangsung, termasuk pada awal permainan, dan semua ramuan pada petak-petak yang dilewati ksatria harus diminum. Tentukan jumlah kekuatan awal minimum yang harus dimiliki ksatria pada awal permainan agar ksatria tersebut dapat menyelamatkan sang putri dan memenangkan permainan! Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 7. Berapakah banyak bilangan bulat positif berbeda yang habis membagi 337500? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 8. Pada sebuah pesta, terdapat 5 jenis pasangan makanan dan minuman yaitu jenis A, B, C, D, dan E. Setiap makanan jenis A, akan mempunyai pasangan minuman jenis A. Demikian juga untuk B, C, D, E. Pak Dengklek mendapat kesempatan untuk mencicipi semua jenis makanan dan minuman. Namun, terdapat aturan bahwa setiap minuman jenis X hanya dapat diminum jika dan hanya jika makanan jenis X sudah dimakan. Sebagai contoh, minuman jenis A hanya dapat diminum apabila makanan jenis A sudah dimakan. Berapa banyak kemungkinan urutan makan dan minum semua jenis makanan yang disediakan pada pesta tersebut? Anda dapat menuliskan jawaban dalam bentuk angka, atau dalam bentuk kombinasi, permutasi, dan faktorial. Jawaban: ……………. {tuliskan jawaban dalam bentuk angka atau persamaan yang mengandung notasi kombinasi, permutasi, atau faktorial} 9. Diberikan sebuah larik (array) yang berisi 7 buah bilangan bulat yaitu: {42, 16, 40, 33, 0, 28, 41}. Pak Dengklek menginginkan sekumpulan bilangan (satu atau beberapa bilangan) yang jika dilakukan operasi XOR (exclusiveor terhadap representasi bit suatu bilangan) terhadap elemen-elemen larik tersebut satu demi satu, hasilnya adalah bernilai 0 (nol). Pak Dengklek boleh menambahkan satu atau beberapa bilangan bulat ke dalam larik tersebut supaya keinginannya dapat tercapai. Namun ternyata, terdapat biaya yang perlu dibayar untuk menambahkan sekumpulan bilangan bulat, yaitu sebesar bilangan terbesar yang terdapat pada kumpulan bilangan tersebut. Sebagai contoh, bilangan bulat yang ingin ditambahkan = {25, 17, 1} maka biaya yang perlu dibayar adalah 25. Berapakah biaya terkecil yang perlu dibayar Pak Dengklek? (Jika ternyata Pak Dengklek tidak perlu menambahkan apa-apa, tuliskan 0). Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 10. Ini adalah gambar Pak Dengklek dengan teman-temannya yang terdaftar di media sosial bernama TokiBook. Sesi 2 : Bidang Informatika/Komputer Halaman 2 dari 14 OSP 2016 Pada TokiBook tersebut, sebuah garis menandakan adanya pertemanan antara dua orang. Pada media tersebut, seseorang dapat mengunggah sebuah foto, like sebuah foto, ataupun share foto yang diunggahnya. Peraturannya adalah sebagai berikut: Seseorang yang mengunggah foto, dapat memilih mau share ke teman yang mana, secara spesifik. Jika seseorang me-like foto anda, seluruh temannya dapat melihat foto anda. Pak Dengklek ingin mengunggah sebuah foto, tetapi foto tersebut berbahaya apabila dilihat oleh Bu Dengklek. Kepada siapa saja Pak Dengklek dapat meng-share fotonya sehingga Bu Dengklek tidak melihat foto tersebut? Tuliskan nama-nama orang yang dapat melihat foto yang dikirim oleh Pak Dengklek dan tidak dapat dilihat oleh bu Dengkle, dipisahkan dengan koma. Jawaban: ……………. {tuliskan jawaban dalam bentuk string} 11. Ada suatu negara yang bernama negara TOKI. Mata uang negara TOKI tersebut unik, yaitu berbentuk koin yang masing-masing bernilai 2n (1, 2, 4, 8, 16, …. s.d. 2048). Pak Dengklek ingin membeli suatu barang dengan harga 714 dan harus membayar dengan uang pas. Berapa banyakkah pecahan mata uang minimum yang dibutuhkan untuk dapat membeli barang tersebut? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 12. Pak Dengklek adalah seseorang yang sangat suka dengan teka-teki. Pada suatu hari, ia membeli 10 bola, yang terdiri dari 3 warna putih, 4 warna merah, dan 3 warna hijau. Ia ingin mengambil beberapa bola tersebut secara bersamaan (boleh berapapun). Berapa banyaknya bola minimum yang diperlukan, agar dapat dijamin bahwa pak Dengklek mengambil minimal 2 bola untuk setiap warna? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 13. Pak Dengklek adalah orang yang suka teka-teki. Suatu hari ia berpikir untuk menghitung dari 1 sampai 2016 dengan menggunakan jari-jarinya. Pak Dengklek menghitung dengan menggunakan jari, dengan cara sebagai berikut: Proses menghitung diimulai dari 1, yaitu dengan jari kelingking; 2 dengan jari manis; 3 dengan jari tengah; 4 dengan jari telunjuk; 5 dengan jempol; 6 dengan jari telunjuk; 7 dengan jari tengah; 8 dengan jari manis; 9 dengan jari kelingking; 10 dengan jari manis; dan seterusnya. Jari apakah yang akan direpresentasikan saat Pak Dengklek menghitung angka 2016? Jawaban: ……………. {tuliskan jawaban dalam bentuk string, bukan angka} Sesi 2 : Bidang Informatika/Komputer Halaman 3 dari 14 OSP 2016 Berikut ini merupakan deskripsi untuk soal nomor 14 dan 15 Tusuk gigi di TOKI Fried Kitchen memang sering manjadi bahan mainan pelanggan. Suatu hari, karena bosan menunggu pesanannya, Pak Dengklek membuat persamaan matematika sederhana dengan 15 batang tusuk gigi yang ada di mejanya. Persamaan matematika yang dibuat pak Dengklek hanya dapat mengandung simbol-simbol pada gambar berikut, disertai juga jumlah batang tusuk gigi yang diperlukan untuk membuat masing-masing simbol. Suatu persamaan matematika merupakan sebuah string yang dibentuk dengan meng-konkatenasi (menyambungkan) simbol-simbol matematika yang dapat digunakan, misalnya 1+1=2 dan 1+4=2+3. Persamaan matematika yang dibentuk Pak Dengklek harus memenuhi kriteria-kriteria berikut. ● Persamaan matematika tersebut dibuat dengan kurang dari atau sama dengan 15 batang tusuk gigi. ● Persamaan matematika tersebut mengandung tepat satu simbol ‘=’ (sama dengan). ● Ruas kiri dan ruas kanan mengandung paling sedikit satu simbol angka: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. ● Nilai hasil penjumlahan atau angka pada ruas kiri sama dengan nilai hasil penjumlahan atau angka pada ruas kanan. ● Suatu simbol angka tidak dapat muncul tepat di sebelah simbol angka yang lain. Setiap angka satu digit ● Simbol ‘+’ (tambah) hanya dapat muncul di antara dua buah simbol angka. 14. Berapa banyak string-persamaan-matematika berbeda yang dapat dibuat Pak Dengklek? Jika string yang merepresentasi persamaan berbeda, dihitung dua kali. Contoh dua buah persamaan “1 + 1 = 2” dan “2 = 1 +1” dihitung sebagai 2 (dua) persamaan. Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 15. Jika pernyataan “Persamaan matematika tersebut dibuat dengan kurang dari atau sama dengan 15 batang tusuk gigi.” diubah menjadi “Persamaan matematika tersebut dibuat dengan menggunakan tepat 15 batang tusuk gigi.”, berapa banyaknya string-persamaan-matematika berbeda yang dapat dibuat Pak Dengklek ? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 16. Pada sebuah papan catur berukuran 6x6, akan diletakkan 6 benteng putih dan 6 benteng hitam sedemikan sehingga benteng berwarna sama tidak boleh berada dalam baris yang sama dan pada kolom yang sama. Selain itu, Tidak boleh ada petak yang diisi lebih dari satu benteng. Berapa banyaknya cara meletakkan 6 benteng hitam dan 6 benteng putih dengan batasan tersebut ? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 17. Berapa banyaknya binary string dengan panjang 15 bit yang tidak mengandung substring "001"? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 18. Jika 1234 = 2𝑎1 +2𝑎2 +2𝑎3 +2𝑎4 +2𝑎5 dimana 𝑎1 , 𝑎2 , . . . , 𝑎5 adalah bilangan cacah, dan 𝑎1 < 𝑎2 < . . . < 𝑎5 . Tentukan nilai 𝑎1 + 𝑎2 +. . . +𝑎5 Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 19. Pak Ganesh merahasiakan 2 bilangan bulat positif (x dan y, x ≤ y) dan lebih kecil dari 100. Dia memberitahukan hanya hasil penjumlahan kedua bilangan tersebut ke Pak Dengklek, dan hanya hasil perkalian kedua bilangan tersebut ke Bu Dengklek. Kemudian terjadi pembicaraan antara Pak Dengklek dan Bu Dengklek. Pak Dengklek : “Saya tidak tahu nilai kedua bilangan tersebut”. Bu Dengklek : “Saya juga tidak tahu”. Pak Dengklek : “Saya mengetahui bilangannya sekarang”. Bu Dengklek : “Saya juga”. Perlu diketahui bahwa Pak Dengklek dan Bu Dengklek adalah orang sangat pintar, sehingga mengetahui nilai x dan nilai y tersebut. Berapakah nilai 5𝑥 + 𝑦? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} Sesi 2 : Bidang Informatika/Komputer Halaman 4 dari 14 OSP 2016 Berikut ini merupakan deskripsi untuk soal nomor 20 dan 21 Pak Dengklek adalah seseorang yang sangat menyukai angka-angka. Pada suatu hari, ia berpikir sebagai berikut. Diberikan sebuah deretan angka (bisa tidak unik). Lalu, beberapa angka dari deretan tersebut dijumlahkan menghasilkan deret menaik dari 1,2,3, …. s.d. N. Sebagai contoh, Jika kumpulan angka tersebut adalah (1,1,2), maka Pak Dengklek dapat membuat angka 1 dengan memilih (1), angka 2 dengan memilih (1,1) atau (2), angka 3 dengan memilih (1,2), angka 4 dengan memilih (1,1,2), tetapi tidak bisa memilih angka 5 karena tidak ada kemungkinan yang memenuhi.. Dari penjumlahan tersebut, dapat dilihat bahwa angka 1 sampai dengan 4 dapat dibuat, karena itu nilai N yang memenuhi adalah 4. 20. Diberikan sekuens (1,1,3,6,6,19,20), Berapakah nilai N yang memenuhi deskripsi di atas? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 21. Diberikan sekuens (3,4,6,6). Berapa banyakkah bilangan minimum yang diperlukan agar N = 92 ? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} Berikut ini merupakan deskripsi soal untuk nomor 22 dan 23 Dalam sebuah perusahaan, suatu proyek yang dipimpin oleh seorang pimpinan proyek akan dibagi-bagikan kepada 6 buah tim kecil yang beranggotakan sebagai berikut: ● Tim I : Abdul, Chika, Dono ● Tim II : Chika, Edgar, Gogo ● Tim III : Abdul, Farhan ● Tim IV : Abdul, Beni, Edgar ● Tim V : Beni, Chika, Farhan ● Tim VI : Beni, Dono, Gogo Tiap awal bulan, setiap tim perlu melakukan rapat rutin bulanan yang wajib dihadiri seluruh anggota tim dengan lengkap. Tiap rapat rutin bulanan berdurasi selama 1 hari penuh. Karena alasan tersebut, untuk dua tim yang memiliki anggota yang sama perlu dijadwalkan rapat pada hari yang berbeda. 22. Apabila pada 1 hari dapat dilakukan > 1 rapat rutin untuk tim-tim yang tidak memiliki anggota yang sama, berapa hari minimal supaya sang pimpinan proyek dapat memastikan bahwa seluruh tim sudah melakukan rapat bulanan? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 23. Ternyata, terdapat sebuah modul proyek yang belum ditangani oleh tim I sampai VI sehingga sang pimpinan proyek membentuk sebuah tim kecil (tim VII) yang terdiri dari Abdul, Dono, dan Gogo. Berapa hari minimum supaya yang pimpinan proyek dapat memastikan bahwa tim I sampai VII sudah melakukan rapat bulanan? Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 24. Sebagai pendekar, Pak Dengklek dan Pak Ganesh tidak boleh sakit. Supaya sehat, keduanya harus minum air putih 2 liter per hari. Pak Dengklek memiliki 2 buah gelas : satu berukuran 200 ml and satunya lagi berukuran 500 ml. Berapa banyak urutan minum Pak Dengklek dengan 2 buah gelas tersebut (tidak perlu dipakai semua) apabila ia ingin minum air putih tepat 2 liter? Urutan minum 200-200-200-200-200-500-500 dan 500-500-200200-200-200-200 dianggap berbeda. Jawaban: ……………. {tuliskan jawaban dalam bentuk angka saja} 25. Sebagai pendekar, Pak Dengklek dan Pak Ganesh tidak boleh sakit. Supaya sehat, keduanya harus minum air putih 2 liter per hari. Pak Ganesh memiliki 3 buah gelas : satu berukuran 200 ml, satu berukuran 300 ml, and satunya lagi berukuran 500 ml. Berapa banyak urutan minum Pak Ganesh dengan 3 buah gelas tersebut (tidak perlu dipakai semua) apabila ia ingin minum air putih tepat 2 liter? Urutan minum 200-200-200-200-200-500500 dan 500-500-200-200-200-200-200 dianggap berbeda. Sesi 2 : Bidang Informatika/Komputer Halaman 5 dari 14 OSP 2016 Bagian A: Pertanyaan Algoritmika (17 pertanyaan) 26. Apa output program berikut apabila n = 6? {tuliskan jawaban sesuai dengan output yang dihasilkan} const MAXS = 10; var i, n : integer; A : array[1..10] of integer; procedure klik(); begin i := i-1; end; function klek(x : integer) : integer; begin if(x = MAXS) then klek := A[x] * A[1] else klek := A[x] * A[x+1]; end; function klok() : integer; var tmp : integer; begin if(i = 0) then klok := i else begin tmp := i; klik(); klok := klok() + klek(tmp); end; end; begin A[1] := 1; A[2] := 2; A[3] := 3; A[4] := 4; A[5] := 5; A[6] := 6; A[10] := 11; A[9] := 9; A[7] := 8; A[8]:=7; read(n); i := n; writeln(klok()); end. 27. Diberikan potongan program sebagai berikut, berapakah hasil dari Proses(11)? {tuliskan jawaban sesuai dengan output yang dihasilkan} function Proses(x : integer) : integer; begin if(x <= 1) then Proses := x else Proses := Proses(x div 2 * x mod 2) + Proses(x div 2 + x mod 2); end; 28. Diberikan fungsi sebagai berikut, berapakah nilai dari noan(8)? {tuliskan jawaban sesuai dengan output yang dihasilkan} function noan(n : integer) : integer; begin if(n < 4) then noan := n else noan := noan(n-1) + noan(n-2) + noan(n-4); end; 29. Diberikan program sebagai berikut, berapa nilai array ar setelah pemanggilan mantaps(5)? {tuliskan jawaban sesuai dengan output yang dihasilkan} var ar : array[1..10] of integer = (1,6,2,3,4,7,2,4,2,1); Sesi 2 : Bidang Informatika/Komputer Halaman 6 dari 14 OSP 2016 procedure mantaps(n : integer); var i : integer; iNi : integer; temp : integer; begin if(n > 1) then begin iNi := n; for i := 1 to n-1 do begin if(ar[i] < ar[iNi]) then iNi := i; end; temp := ar[n]; ar[n] := ar[iNi]; ar[iNi] := temp; mantaps(n-1); end; end; 30. Tuliskan keluaran program sebagai berikut : {tuliskan jawaban sesuai dengan output yang dihasilkan} var x,y: integer; begin x := 1; y := 0; while(x <= 10) do begin y := y + x; x := x + x; end; writeln(y); end. 31. Tuliskanlah keluaran program sebagai berikut: {tuliskan jawaban sesuai dengan output yang dihasilkan} var ar : array[1..10] of integer = (4, 5, 10, 5, 51, 33, 49, 64, 2, 7); a, b, c, i : integer; begin a := -1; for i := 1 to 10 do begin if a = -1 then a := i else if ar[i] > ar[a] then a := i; end; b := -1; for i := 1 to 10 do begin if i <> a then begin if b = -1 then b := i else if ar[i] > ar[b] then b := i; end; end; c := -1; for i := 1 to 10 do begin if (i <> a) and (i <> b) then begin if c = -1 then c := i else if ar[i] > ar[c] then c := i; end; end; writeln(a, ' ', b, ' ', c); end. Sesi 2 : Bidang Informatika/Komputer Halaman 7 dari 14 OSP 2016 32. Tuliskanlah keluaran program berikut ini : : {tuliskan jawaban sesuai dengan output yang dihasilkan} function meong(x: longint):integer; begin if (x = 0) then meong := 0 else if (x mod 2 = 1) and ((x div 2) mod 2 = 1) then meong := meong((x div 2) div 2) + 1 else meong := meong(x + 1) + 1; end; begin writeln(meong(888)); end. 33. Perhatikan program Pascal berikut ini. Berapakah hasil dari pemanggilan fungsi get? {tuliskan jawaban sesuai dengan output yang dihasilkan} var arr: array [1..20] of integer = (303, 304, 365, 454, 487, 6, 12, 15, 78, 90, 155, 169, 183, 205, 209, 218, 5, 269, 282, 287); function get : integer; var m: integer; left, right: integer; begin if (arr[1] < arr[20]) then get := 1 else begin left := 1; right := 20; while (left < right) do begin m := (left+right) div 2; if (arr[1] <= arr[m]) then left := m+1 else right := m; end; get := left; end; end; 34. Diberikan program sebagai berikut, ada berapa banyak elemen pada array tersebut yang bernilai true jika pada awalnya seluruh array bernilai false? {tuliskan jawaban dalam bentuk angka saja} Var ar : array[1..1000] of Boolean; i,j : integer; begin for i := 1 to 1000 do ar[i] := false; for i := 1 to 1000 do begin j := i; while(j <= 1000) do begin ar[j] := not(ar[j]); j := j + i; end; end; end. Sesi 2 : Bidang Informatika/Komputer Halaman 8 dari 14 OSP 2016 Berikut ini adalah program untuk soal no 35 dan 36 var isi : array[1..10] of integer = (-4,1,7,9,0,1,2,4,3,-1); function var temp begin if(l else X(l, r, v : integer) : longint; : integer; = r) then X := isi[l] begin temp := (l + r) div 2; if(isi[temp] > v) then begin X := X(l, temp, v); end else X := X(temp + 1, r, v); end; end; 35. Jika dipanggil X(2,6,4), berapakah nilai kembaliannya? {tuliskan jawaban sesuai dengan nilai yang dihasilkan dari pemanggilan fungsi tersebut} 36. Berapa kali fungsi X dipanggil pada pemanggilan X(1, 10, 0), termasuk pada saat dipanggil pertama kali? {tuliskan jawaban dalam bentuk angka saja}. Berikut ini adalah program pascal untuk soal no 37 dan 38 var daebak : array [0..2015] of char; w, x, y, z, i : integer; procedure saranghae(x : integer; len : integer); var i : integer; store : char; begin store := daebak[x]; for i := len-1 downto 0 do begin if (i = 0) then daebak[x+((i+1) mod len)] := store else daebak[x+((i+1) mod len)] := daebak[x+i]; end; end; procedure anyeong(arr_sz : integer; part_sz : integer); var i : integer; begin for i:= 0 to (arr_sz div part_sz)-1 do begin saranghae(i * part_sz, part_sz); end; end; procedure oppa(n : integer); var i : integer; begin for i := 0 to n-1 do begin if(i mod 4 = 0) then daebak[i] := 'T' else if(i mod 4 = 1) then daebak[i] := 'O' else if(i mod 4 = 2) then daebak[i] := 'K' else daebak[i] := 'I'; Sesi 2 : Bidang Informatika/Komputer Halaman 9 dari 14 OSP 2016 end; end; begin readln(w, x, y, z); oppa(w); for i := 1 to x do anyeong(y, z); for i := 0 to w-1 do begin if(i mod 4 = 0) and (i <> 0) then write(“ “); write(daebak[i]); end; writeln; end. 37. Apa yang dihasilkan program di atas apabila yang diinputkan “16 2 12 4”? {tuliskan jawaban sesuai dengan nilai yang dihasilkan dari eksekusi program tersebut} 38. Apa yang dihasilkan program di atas apabila yang diinputkan “16 4 10 5”? {tuliskan jawaban sesuai dengan nilai yang dihasilkan dari eksekusi program tersebut} Perhatikan potongan program berikut untuk soal nomor 39 and 40 Var s, t: string; x, l, r, k: byte; temp: char; begin readln(s); k x l r t := := := := := 0; 0; 1; length(s); ''; while (l <= r) do begin if (k mod 2) = 0 then begin temp := s[r]; r := r – 1; end else begin temp := s[l]; l := l + 1; end; k := k + 1; // // // // // // ord(c) adalah fungsi untuk mengubah karakter c menjadi nilai pada ASCII ord('A') = 65 ord('B') = 66 ... ord('Z') = 90 x := (x + ord(temp) - ord('A')) mod 26; t := t + chr(x + ord('A')); end; writeln(t); end. Sesi 2 : Bidang Informatika/Komputer Halaman 10 dari 14 OSP 2016 39. Apabila diberikan input berupa string “IXYBEJVCE”, tuliskan output dari program di atas. {tuliskan jawaban sesuai dengan output yang dihasilkan} 40. Input apa yang harus diberikan agar output dari program di atas adalah “RJJJVDPII”? {tuliskan jawaban sesuai dengan input yang diperlukan} Perhatikan program berikut untuk soal nomor 41 dan 42 Var Q : array[1..15] of integer = (1,5,2,3,4,6,2,7,3,4,6,0,-1,2,3); P : array[0..15] of integer; i, a, b,total : integer; begin P[0] := 0; for i := 1 to 15 do begin P[i] := P[i-1] + Q[i]; end; readln (a,b); total := 0; for i := a to b do begin total := total + Q[i]; end; writeln(total); end. // // // // baris-1 baris-2 baris-3 baris-4 41. Berapakah nilai total yang dikeluarkan sebagai output, apabila a = 6 dan b = 10? {tuliskan jawaban sesuai dengan output yang dihasilkan} 42. Instruksi yang diberi komentar baris-1 sampai dengan baris-4 (lihat kode di atas) dapat digantikan dengan satu baris berisi instruksi: total := rumus;. Tuliskanlah rumus untuk mendapatkan hasil penjumlahan array Q dari indeks a sampai b (inklusif, 1 ≤ a ≤ b ≤ 15) dengan notasi dalam P, Q, a, dan b, misalnya anda menjawab: P[a*b] + Q[a-b]. {tuliskan jawaban dalam bentuk rumus tersebut}. Perhatikan potongan kode berikut untuk soal nomor 43 dan 44 var isi : array[1..10] of integer; i : integer; procedure Whatsup(l, r : integer); var X : integer; begin X := isi[l]; isi[l] := isi[r]; isi[r] := X; end; procedure naoooon(l, r : integer); var ini : integer; kiri, kanan : integer; begin if(l < r) then begin kiri := l; kanan := r; ini := isi[(kiri + kanan) div 2]; while(kiri < kanan) do begin while(isi[kiri] > ini) do kiri := kiri + 1; while(isi[kanan] < ini) do kanan := kanan - 1; if(kiri < kanan) then Whatsup(kiri, kanan); end; naoooon(l, kanan); Sesi 2 : Bidang Informatika/Komputer Halaman 11 dari 14 OSP 2016 naoooon(kanan+1, r); end; end; begin isi[1] := 5; isi[2] := 10; isi[3] := 18; isi[4] := 1; isi[5] := 7; isi[6] := 9; isi[7] := 3; isi[8] := 8; isi[9] := 100; isi[10] := 29; naoooon(1,10); for i := 1 to 9 do write(isi[i], ' '); writeln(isi[10]); end. 43. Tuliskan output program di atas. {tuliskan jawaban sesuai dengan output yang dihasilkan} 44. Jika baris naoooon(1,10) diganti dengan naoooon(3, 6), tuliskanlah output program di atas. {tuliskan jawaban sesuai dengan output yang dihasilkan} 45. Tuliskanlah Input yang dapat mengeluarkan output berupa satu baris berisi angka-angka sebagai berikut: 1 2 3 4 5 untuk program sebagai berikut: {tuliskan jawaban sesuai dengan input yang diperlukan} Var ar : array[1..5] of integer; i : integer; procedure S(a,b : integer); var temp : integer; begin temp := ar[a]; ar[a] := ar[b]; ar[b] := temp; end; begin for i := 1 to 5 do read(ar[i]); S(3,4); S(4,1); S(5,2); S(5,1); for i := 1 to 4 do begin write(ar[i], ' '); end; writeln(ar[5]); end. ~o Akhir Lembar Soal Bagian A o~ Sesi 2 : Bidang Informatika/Komputer Halaman 12 dari 14 OSP 2016 Bagian B: Membuat Program/Algoritmika Sederhana (3 pertanyaan) 1. PRIMA + PRIMA = PRIMA Diberikan N buah bilangan prima berbeda P1, P2, P3, …, PN. Tentukan apakah ada sepasang bilangan prima Pi dan Pj dengan i ≠ j, yang apabila dijumlahkan akan menjadi bilangan prima juga. Batasan : 2 ≤ N ≤ 100.000 1 ≤ Pk ≤ 500.000 untuk k dari 1 hingga N Pk dijamin bilangan prima untuk k dari 1 hingga N Format Input : Baris 1 : Sebuah bilangan N Baris 2 : P1, P2, P3, …, PN Format Output : ADA / TIDAK ADA (sesuai deskripsi di atas) Sample input dan output : 5 23 19 11 7 2 ADA 5 2 7 13 19 23 TIDAK ADA Keterangan : Pada sample pertama, ada sepasang bilangan prima 11 and 2 yang apabila dijumlahkan adalah 13 yang juga merupakan bilangan prima. Pada sample kedua, tidak ada sepasang bilangan prima yang apabila dijumlahkan menjadi bilangan prima lainnya. 2. MENGHITUNG PERSEGI Tahukah kamu bahwa grid berukuran 3x4 sebagai berikut memiliki 20 persegi (segi empat sama sisi)? Diberikan N and M, tentukan banyaknya persegi yang terdapat pada grid berukuran NxM. Batasan : 1 ≤ N,M ≤ 100.000 Format Input : NM Format Output : Sebuah bilangan yang menyatakan banyaknya persegi yang terdapat pada grid berukuran NxM. Sesi 2 : Bidang Informatika/Komputer Halaman 13 dari 14 OSP 2016 Sample input dan output : 3. 3 4 20 4 3 20 1 10 10 5 5 55 STRING PALINDROM Terdapat suatu string dengan panjang N. Anda harus menentukan apakah string tersebut merupakan palindrom atau bukan. Palindrom adalah sebuah string yang jika dibaca dari kiri ke kanan akan sama dengan jika dibaca dari kanan ke kiri. Pada soal ini, String hanya berisi huruf alphabet kecil tanpa spasi. Jika string tersebut adalah sebuah palindrom, maka outputkan “PALINDROM” (tanpa tanda petik). Jika string tersebut bukan palindrom, maka outputkan “BUKAN PALINDROM” (tanpa tanda petik). Perhatikan contoh sebagai berikut: Input 4 abba 4 abbb 1 a 9 kasurusak 19 ospduaribuenambelas Output PALINDROM BUKAN PALINDROM PALINDROM PALINDROM BUKAN PALINDROM Format Masukan : Baris 1 : sebuah bilangan N Baris 2 : sebuah string dengan panjang N. String dijamin memiliki panjang N. Format Keluaran : Output sesuai dengan program di atas. Batasan: 1 ≤ N ≤ 100 Setiap karakter pada string merupakan huruf alphabet kecil. ~o Akhir Lembar Soal Bagian B o~ Sesi 2 : Bidang Informatika/Komputer Halaman 14 dari 14 OSP 2016