Simulasi OSP 2018 [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

Simulasi OSP 2018 Disclaimer : 1. Pembuat soal tidak memiliki memiliki kaitan dengan panitia soal OSP maupun juri OSP. Simulasi ini semata-mata dibuat untuk membantu persiapan para peserta 2. Penilaian poin pada ujian ini tidak dijamin sama dengan OSP sesungguhnya. 3. Komposisi soal dan isi soal ini tidak dijamin mencerminkan soal OSP nanti. Namun pembuat soal berusaha agar komposisi dan tingkat kesulitan yang sesuai dengan OSP sesungguhnya.



Harap baca instruksi dibawah dengan seksama : 1. Terdapat 2 bagian ujian : 45 soal isian singkat dan 3 soal membuat program 2. Waktu pengerjaan adalah 150 menit (2,5 jam) + toleransi 10 menit untuk mengupload jawaban (19.30 – 22.10) 3. Anda diminta untuk mengisi jawaban anda pada form ini : bit.ly/formsimulasiosp2018 4. Pada bagian isian, isilah : a. Jika jawaban berbentuk bilangan, maka tulis bilangannya saja (tidak perlu menambahkan satuan/kata yang tidak perlu seperti cm, dollar, buah, kali, dll) b. Jika jawaban berbentuk string/kata, perhatikan penggunaan kapital (nama orang harus diawali huruf kapital) Hal ini ditekankan dikarenakan penilaian dilakukan menggunakan formula pada spreadsheet dengan membandingkan secara eksak dengan jawaban penulis 5. Pada bagian membuat program, tulislah jawaban anda pada kertas, lalu foto dan upload ke image hosting seperti https://id.imgbb.com atau http://tinypic.com. Hasil url gambarnya tersebut Anda isikan pada kolom jawaban. 6. Pengumpulan hanya dapat dilakukan sekali dan tidak dapat diubah. Pastikan anda benar-benar telah selesai ketika memencet tombol submit 7. Selamat mengerjakan dan semoga sukses



by : Mamat Rahmat



http://olimpiadeinformatika.com



1. Berapakah faktor terkecil bukan 1 dari (22225555 + 55552222)? 2. Terdapat 15 orang yang akan diberangkatkan ke Padang untuk mengikuti OSN. Karena kehabisan, dinas hanya mendapatkan 6 tiket pesawat. Sehingga sisa tiket yang harus dibeli digunakan untuk membeli tiket kapal laut. Diketahui 3 orang mabuk laut sehingga tidak dapat naik kapal laut dan 2 orang mabuk udara sehingga tidak dapat naik pesawat. Maka ada berapa cara membagi tiket tersebut ke 15 orang peserta? 3. Pak Dengklek berada pada koordinat 3 dimensi (0,0,0) ingin menemui Pak Ganesh yang terletak pada koordinat (3,4,2). Pak Dengklek hanya bisa melakukan 3 macam langkah yaitu: 1) Langkah ke kanan, (x,y,z) → (x+1,y,z) 2) Langkah ke depan, (x,y,z) → (x,y+1,z) 3) Langkah ke atas, (x,y,z) → (x,y,z+1) Berapa banyak kemungkinan rute perjalanan Pak Dengklek menuju ke tempat Pak Ganesh 4. Pak Dengklek memiliki 8 buah bilangan 1. Ia ingin menyisipkan 7 buah tanda (+/-) diantara bilanganbilangan tersebut dan mengoperasikannya menjadi sebuah bilangan. 1…1…1…1…1…1…1…1=? Ada berapakah banyaknya bilangan berbeda dari hasil operasi tersebut? 5. Pak Dengklek memiliki 120 ekor ikan yang dinomorinya 1 sampai 120. Semua ikan yang bernomor genap suka makanan rasa bayam, ikan yang nomornya habis dibagi 5 suka makanan rasa pisang, dan ikan yang nomornya habis dibagi 7 suka makanan rasa kangkung. Ada berapa banyaknya ikan yang suka bayam tetapi tidak suka pisang maupun kangkung? 6. Maria, Santi, Adinda, Jenifer, dan Kanya sedang duduk di kursi yang berjejer di sebuah taman. • Maria tidak duduk kursi paling kanan; • Santi tidak duduk di kursi paling kiri. • Adinda tidak duduk di kursi paling kiri maupun paling kanan. • Kanya tidak duduk di sebelah Adinda, dan Adinda tidak duduk di sebelah Santi. • Posisi duduk Jenifer berada di kanan Santi (bisa bersebelahan atau tidak). Siapakah yang duduk di kursi paling kanan? (Perhatikan penggunaan kapital dalam penulisan nama) 7. Jika diketahui, a, b, c, d adalah bilangan bulat yang memenuhi a < b < c < d < 2c < 3b < 4a, maka berapakah nilai minimal dari a yang mungkin? (Tulis -1 jika tidak ada)



by : Mamat Rahmat



http://olimpiadeinformatika.com



8. Pak Dengklek berencana membuat menara kartu setinggi 20. Perhatikan gambar di bawah merupakan menara kartu dengan tinggi 3. Ada berapa banyak kartu yang ia butuhkan?



9. Subarray adalah array yang dibentuk dari elemen-elemen berurutan dari sebuah array. Misalnya [2,5,7] dan [1,2] adalah subarray dari [1,2,5,7,3], sedangkan [2,7,3] bukan. Increasing subarray artinya subarray yang semakin ke kanan elemennya semakin besar. Array [1,4,5,5,6,7,8,9] ingin dipartisi (dipecah) menjadi beberapa increasing subarray (setiap elemen array harus termasuk ke dalam salah satu increasing subarray). Beberapa contoh yang mungkin adalah : 1) [1,4,5], [5,6,7,8,9] 2) [1], [4,5], [5,6,7], [8,9] … dll Ada berapa kemungkinan partisi? 10. Jika array yang dimaksud adalah [1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2], ada berapakah kemungkinan partisi? 11. Jika array yang dimaksud adalah [1, 4, 9, 16, 16, 9, 4, 25, 36, 100, 81, 49, 64], ada berapa kemungkinan partisi? 12. Pak Dengklek sangat tertarik dengan barisan menaik. Sayangnya ia hanya punya bilangan 1, 2, 3, dan 4. Sehingga ia hanya bisa membuat barisan menaik yang pendek. Ia tak kehabisan akal. Ia akhirnya membuat definisi baru : Barisan hampir-menaik adalah barisan yang elemen disebelah kanannnya lebih besar, kecuali elemennya adalah 4, maka elemen di sebelah kanannya hanya boleh 1. Secara formal, (misalnya n panjang barisan dan a[i] adalah elemen ke-i) pada barisan hampir-menaik untuk 1 0) do begin write((num(b[y])+c) mod 10); c := (num(b[y])+c) div 10; dec(y); end; end. 40. Jika diberi input 123 45 berapakah output dari program di atas?



by : Mamat Rahmat



http://olimpiadeinformatika.com



41. Jika diberi input 5439321 4594272 berapakah output dari program di atas? Berapakah nilai bpf(2016, 1000) ? (fungsi min(x,y) menghasilkan nilai minimal diantara x dan y) function bpf(a, b : longint):longint; begin if (a=b) then bpf := (a+b) div 2 else if (a=0) then bpf := b else if (b=0) then bpf := a else if (a mod 2 + b mod 2 = 0) then bpf := 2*bpf(a div 2, b div 2) else if (a mod 2 = 0) then bpf := bpf(a div 2, b) else if (b mod 2 = 0) then bpf := bpf(a, b div 2) else bpf := bpf(abs(a-b), min(a,b)); end; 42. Berapakah nilai dari bpf(2016, 1000)? 43. Ada berapa pasang bilangan (a, b) dimana 1