Soal Olimpiade Komputer Part 2

9
Part 2: Algoritmika Pilihan berganda Waktu: 06 September 2006, 10:30:00-13:30:00 Jawaban Betul: 4 Jawaban Salah: -1 Jawaban Kosong: 0 Nilai akhir dipetakan ke 20 - 100 Bagian Deskripsi Deskripsi osn007.html Algoritma dengan pseudopascal berikut dimaksudkan untuk menjumlahkan bilangan bilangan pada 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; // inisialisasi i while i < hargabatas do begin sum := sum + tabeldata[i]; //increment i end; writeln(sum); Deskripsi osn008.html 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'); Deskripsi osn009.html Perhatikan program berikut: // 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); Deskripsi osn010.html Perhatikan algoritma berikut.

description

Kumpulan Soal Olimpiade Komputer.

Transcript of Soal Olimpiade Komputer Part 2

Page 1: Soal Olimpiade Komputer Part 2

Part 2: Algoritmika

Pilihan berganda

Waktu: 06 September 2006, 10:30:00-13:30:00 Jawaban Betul: 4 Jawaban Salah: -1 Jawaban Kosong: 0

Nilai akhir dipetakan ke 20 - 100

Bagian Deskripsi

Deskripsi osn007.html

 

Algoritma dengan pseudopascal berikut dimaksudkan untuk menjumlahkan bilangan bilangan pada 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; // inisialisasi iwhile i < hargabatas do begin sum := sum + tabeldata[i]; //increment iend;writeln(sum);

Deskripsi osn008.html

 

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');

Deskripsi osn009.html

 

Perhatikan program berikut: // array X berisi n bilangan dengan index dari 1 s.d. n

// fungsi Max(a,b) adalah mencari bilangan terbesar dari a atau bts := 0;ms := 0;for i := 1 to n dobegin ts := Max(0, X[i] + ts); ms := Max(ts, ms); end;writeln(ms);

Deskripsi osn010.html

 

Perhatikan algoritma berikut. procedure Bingo(t);begin if (t < 2) then writeln('Bingo!')

else begin Bingo(t-1); Bingo(t-2) end;end;

Deskripsi osn011.html

Page 2: Soal Olimpiade Komputer Part 2

 

Perhatikan algoritma berikut. procedure Boo(t: integer);begin if (t > 0) then begin for i := 1 to t do writeln(\'Boo!\'); Boo(t div 2); // t dibagi 2 dan dibulatkan ke bawah end;end;

Deskripsi osn012.html

 Suatu array X berindeks dari 1 s.d. 10 dan setiap elemennya berisi huruf-huruf berurutan dari 'a' sampai 'j'.

Deskripsi osn013.html

 

Pak Umar adalah petugas parkir kendaraan-kendaraan berat. Lebar kendaraan-kendaraan itu bermacam-macam (berukuran bilangan-bilangan bulat positif sudah termasuk lebar celah antar kendaraan saat di parkir) sementara tempat parkirnya berupa satu lapangan memanjang dari kiri ke kanan sepanjang 100 meter yang hanya cukup untuk satu baris kendaraan-kendaraan itu. Dengan keluar masuknya kendaraan setiap saat, Pak Umar mengatur penempatannya berdasarkan "tempat mana yang pertama kali ditemukan" jika ditelusuri dari sebelah kiri. Berdasarkan algoritma tersebut, saat area parkir masih kosong maka setiap kendaraan yang parkir akan ditempatkan mulai dari terkiri ke kanan. Karena ada kendaraan yang juga keluar area parkir maka terdapat ruang kosong yang ditinggalkan kendaraan tersebut. Jika kendaraan berikutnya menemukan ruang itu sebagai yang kosong pertama, dan kendaraan itu lebih kecil atau sama dengan ruang kosong itu, maka kendaraan itu diparkirkan disitu. Jika tidak, maka dicari ruang kosong berikutnya di sebelah kanannya. Kendaraan yang diparkir tidak dapat digeser-geserkan karena beratnya dan kunci kontaknya dibawa masing-masing supirnya pergi saat kendaraan itu diparkir. Suatu hari, dimulai dari tempat parkir yang kosong, berturut-turut terjadi keluar/masuk kendaraan dengan nomor kendaraan dan ukurannya (ditulis "no x (lebar)") sebagai berikut masuk no 1 (20m), masuk no 2 (40m), masuk no 3 (15m), keluar no 2, masuk no 4 (20m).

Deskripsi osn014.html

 

Dokter Eko Eriyatno dalam pelayanan terhadap pasiennya, menerapkan sistem antrian menggunakan prioritas bagi para pasien yang menunggu di ruang tunggu prakteknya. Aturannya antriannya adalah sebagai berikut. Seorang pasien yang baru datang dengan prioritas yang lebih tinggi akan didahulukan di muka pasien yang sudah datang lebih dahulu tetapi dengan prioritas yang lebih rendah. Jika sudah ada pasien yang sama atau lebih tinggi prioritasnya, maka pasien yang baru datang itu akan antri di belakangnya. Prioritasnya ditentukan di dasarkan pada tingkat kegawatan penyakit si pasien yang dilakukan oleh juru rawat pembantunya saat setiap pasien mendaftar untuk pemeriksaan. Prioritas dinyatakan dengan bilangan bulat positif; semakin tinggi prioritasnya maka bilangannya semakin besar.

Deskripsi osn015.html

 

Pak Fauzan senang bermain kartu solitaire: 7 lembar kart-kartu pertama berturut-turut ditempatkan pada kolom 1 sampai 7, 6 lembar kartu-kartu berikutnya berturut-turut ditempatkan pada kolom 7 sampai 2 di atas kartu-kartu pertama yang ditempatkan pada masing-masing kolom, 5 lembar berikutnya berturut-turut ditempatkan pada kolom 3 sampai 7 di atas kartu-kartu kedua yang ditempatkan pada masing-masing kolom, 4 lembar berikutnya berturut-turut ditempatkan pada kolom 7 sampai 4 di atas kartu-kartu kedua yang ditempatkan pada masing-masing kolom, dan seterusnya hingga kartu ke 28 ditempatkan pada kolom ke 7.

Page 3: Soal Olimpiade Komputer Part 2

Bagian Pertanyaan

1. (Soal ini mengacu pada Deskripsi osn007.html di atas) Berapakah harga untuk menginisialisasi i pada baris "// inisialisasi i" agar algoritma bekerja seperti yang diharapkan?

A. 3 B. 0 C. 1 D. 2 E. 4

2. (Soal ini mengacu pada Deskripsi osn007.html di atas) Perintah manakah yang harus diberikan menggantikan "// increment i" ?

A. i := i + 3 B. i := i + 1 C. i := i - 1 D. i := 3 E. i := i + 2

3. (Soal ini mengacu pada Deskripsi osn007.html di atas) Berapakah variabel hargabatas seharusnya diberi harga agar algoritma bekerja seperti yang diharapkan?

A. 31 B. 25 C. 30 D. 35 E. 40

4. (Soal ini mengacu pada Deskripsi osn007.html di atas) Apa yang akan dicetak oleh algoritma jika setiap elemen array berisi harga yang sama dengan nomor indeksnya jika algoritma dituliskan sebagaimana yang seharusnya?

A. 165 B. 135 C. 145 D. 176 E. 30

5. (Soal ini mengacu pada Deskripsi osn008.html di atas) Agar algoritma itu selalu menuliskan 'merah' maka kondisi yang tepat adalah

A. a dan c keduanya harus true sementara b tidak penting B. b berharga true yang lain tidak penting C. a berharga true yang lain tidak penting D. c berharga true yang lain tidak penting E. b berharga false yang lain tidak penting

6. (Soal ini mengacu pada Deskripsi osn008.html di atas) Agar algoritma selalu menuliskan 'putih' maka kondisi yang tepat adalah [Soal ini dianulir karena terdapat lebih dari satu yang benar]

A. b harus false sementara yang lain harus true B. b berharga true yang lain tidak penting C. a dan c keduanya harus true sementara b tidak penting D. a dan b keduanya harus true sementara c tidak penting E. b dan c keduanya harus true sementara a tidak penting

7. (Soal ini mengacu pada Deskripsi osn008.html di atas) Pemeriksaan ekspresi lojik (di antara notasi if dan then) tersebut bisa digantikan dengan ekspresi berikut

A. (a and (c or b)) or (not (c and b) and a) B. ((a <> c) or (a = b) or b) C. ((a = c) and (a <> b) and not b) D. (a and c or b) or (not c or not b and a) E. a and not b and not c

8. (Soal ini mengacu pada Deskripsi osn008.html di atas) Jika a berharga false maka A. algoritma selalu menuliskan 'putih' apapun harga b dan c B. algoritma selalu menuliskan 'merah' apapun harga b dan c C. algoritma selalu menuliskan 'putih' jika salah satu lainnya true D. algoritma selalu menuliskan 'putih' b dan c true E. algoritma selalu menuliskan 'putih' b dan c false

Page 4: Soal Olimpiade Komputer Part 2

9. (Soal ini mengacu pada Deskripsi osn009.html di atas) Jika array berisi harga-harga sebagai berikut: 1, -3, 4, -2, -1, 6 (berarti juga n berharga 6) maka algoritma akan mencetak harga?

A. 7 B. 4 C. 2 D. 6 E. -6

10. (Soal ini mengacu pada Deskripsi osn009.html di atas) Jika array berisi harga-harga sebagai berikut: 1, -1, 1, -1, 1, -1, 1 (berarti juga n berharga 7) maka algoritma akan mencetak harga?

A. 1 B. -1 C. 4 D. -3 E. 7

11. (Soal ini mengacu pada Deskripsi osn009.html di atas) Jika fungsi Max(a,b) diimplementasikan manakah yang anda pilih paling benar dan paling efisien menurut waktu eksekusi?

A. if (a > b) then Max := a else Max := b; B. if (a < b) then Max := a else Max := b; C. Max := b; if (a > b) then Max := a; D. Max := a; if (a > b) then Max := b; E. if ((a - b) > 0) then Max := a else Max := b;

12. (Soal ini mengacu pada Deskripsi osn009.html di atas) Jika jumlah data adalah N maka berapakalikah fungsi Max(a,b) akan dipanggil selama algoritma itu dijalankan?

A. 2N B. N C. N/2 D. N2 E. log(N)

13. (Soal ini mengacu pada Deskripsi osn010.html di atas) Berapa kalikah 'Bingo!' dituliskan jika procedure tersebut dipanggil dengan Bingo(6)?

A. 13 B. 8 C. 6 D. 1 E. 2

14. (Soal ini mengacu pada Deskripsi osn010.html di atas) Untuk menghasilkan tulisan 'Bingo!' lebih dari 100 kali procedure harus dipanggil dengan cara bagaimana? [Soal ini dianulir karena terdapat lebih dari satu yang benar]

A. Bingo(11) B. Bingo(100) C. Bingo(10) D. Bingo(15) E. Bingo(5)

15. (Soal ini mengacu pada Deskripsi osn011.html di atas) Berapa kalikah 'Boo!' dituliskan jika procedure tersebut dipanggil dengan Boo(k) dimana k adalah suatu bilangan 2N?

A. 2N+1-1 B. 2N-1 C. 2N+1 D. 2N E. N

16. (Soal ini mengacu pada Deskripsi osn011.html di atas) Pemanggilan Boo(1000) menghasilkan pencetakan "Boo!" sebanyak?

A. 1993 baris B. 2000 baris C. 1000 baris D. 500 baris E. 10 baris

17. (Soal ini mengacu pada Deskripsi osn011.html di atas) Untuk menghasilkan pencetakan "Boo!" sebanyak 200 kali memerlukan pemanggilan dengan?

A. Boo(102) B. Boo(200) C. Boo(100)

Page 5: Soal Olimpiade Komputer Part 2

D. Boo(16) E. Boo(1000)

18. (Soal ini mengacu pada Deskripsi osn012.html di atas) Suatu algoritma bekerja pada array tersebut sbb

for i := 1 to 10 do swap(X[i],X[10-i+1]; // prosedur swap menukarkan // kedua isi elemen array tsb

for i := 1 to 10 do write(X[i]);

Hasil yang dicetak adalah

A. abcdefghij B. jihgfedcba C. ebacdhfgij D. fghijabcde E. cdefghijab

19. (Soal ini mengacu pada Deskripsi osn012.html di atas) Suatu algoritma bekerja pada array tersebut sbb

procedure lagi(a: integer; b: integer);var t: integer;begin

t := (a+b) div 2; if (a <= b) then begin write(X[t]); lagi (a,t-1); lagi (t+1,b); end

end;

dengan pemanggilan:

lagi(1,10);

Hasil yang akan dicetak adalah

A. ebacdhfgij B. abcdefghij C. jihgfedcba D. fghijabcde E. cdefghijab

20. (Soal ini mengacu pada Deskripsi osn012.html di atas) Suatu algoritma bekerja pada array tersebut sbb

for i := 2 to 9 do swap(X[i-1],X[i+1]; // prosedur swap menukarkan kedua // isi elemen array tsb

for i := 1 to 10 do write(X[i]);

Hasil yang akan dicetak adalah

A. cdefghijab B. ebacdhfgij C. abcdefghij D. jihgfedcba E. fghijabcde

21. (Soal ini mengacu pada Deskripsi osn013.html di atas) Jika berikutnya masuk no 5 berukuran 25 m, akan ditempatkan dimanakah no 5?

A. Sebelah kanan no 3 B. Antara no 1 dan no 3

Page 6: Soal Olimpiade Komputer Part 2

C. Antara no 3 dan no 4 D. Tidak ada ruang yang kosong dan bisa ditempati E. Antara no 2 dan no 3

22. (Soal ini mengacu pada Deskripsi osn013.html di atas) Jika berikutnya masuk no 6 berukuran 40 m, akan ditempatkan dimanakah no 6?

A. Tidak ada ruang yang kosong dan bisa ditempati B. Sebelah kanan no 3 C. Antara no 1 dan no 3 D. Antara no 3 dan no 4 E. Antara no 2 dan no 3

23. (Soal ini mengacu pada Deskripsi osn013.html di atas) Jika berikutnya keluar no 1 dan masuk no 6 berukuran 40 m, akan ditempatkan dimanakah no 6?

A. Tidak ada ruang yang kosong dan bisa ditempati B. Sebelah kanan no 3 C. Sebelah kiri no 4 D. Antara no 3 dan no 4 E. Antara no 2 dan 3

24. (Soal ini mengacu pada Deskripsi osn013.html di atas) Jika aturannya diganti, mencari yang "sisa ruangannya yang sekecil-kecilnya" lalu masuk no 6 berukuran 40 m, akan ditempatkan dimanakah no 6?

A. Antara no 1 dan no 3 B. Antara no 2 dan no 3 C. Antara no 1 dan no 2 D. Tidak ada ruang yang kosong dan bisa ditempati E. Di kanan no 3

25. (Soal ini mengacu pada Deskripsi osn014.html di atas) Suatu hari sebelum jam praktek, datanglah pasien-pasien berturut-turut (dengan bilangan prioritas dituliskan dalam kurung): Amir (3), Andi (3), Maya (2), Ali (4), Siska (3), dan Zaenal (1). Kemudian, setelah dua pasien urutan pertama selesai diperiksa, siapakah pasien berikutnya yang akan diperiksa?

A. Andi B. Amir C. Ali D. Siska E. Maya

26. (Soal ini mengacu pada Deskripsi osn014.html di atas) Suatu hari sebelum jam praktek, datanglah pasien-pasien berturut-turut (dengan bilangan prioritas dituliskan dalam kurung): Amir (3), Andi (3), Maya (2), Ali (4), Siska (3), dan Zaenal (1). Selanjutnya, setelah Dokter Eko selesai melayani pasien ketiga, berturut-turut datang pula Yoyo (2), Kurnia (3), dan Endah (4). Siapakah yang berada pada posisi ke empat? [Soal ini dianulir karena tidak ada jawaban yang benar]

A. Kurnia B. Siska C. Andi D. Yoyo E. Amir

27. (Soal ini mengacu pada Deskripsi osn014.html di atas) Suatu hari sebelum jam praktek, datanglah pasien-pasien berturut-turut (dengan bilangan prioritas dituliskan dalam kurung): Amir (3), Andi (3), Maya (2), Ali (4), Siska (3), dan Zaenal (1). Selanjutnya, setelah Dokter Eko selesai melayani pasien ketiga, berturut-turut datang pula Yoyo (2), Kurnia (3), dan Endah (4). Berapa orangkah yang datang setelah Maya tapi kemudian mendahului Maya dalam antrian?

A. 4 B. 1 C. 2 D. 3 E. 5

28. (Soal ini mengacu pada Deskripsi osn014.html di atas) Suatu hari sebelum jam praktek, datanglah pasien-pasien berturut-turut (dengan bilangan prioritas dituliskan dalam kurung): Amir (3), Andi (3), Maya (2), Ali (4), Siska (3), dan Zaenal (1). Selanjutnya, setelah Dokter Eko selesai melayani pasien ketiga, berturut-turut datang pula Yoyo (2), Kurnia (3), dan Endah (4). Pada urutan keberapakah Maya setelah itu?

A. 4 B. 2 C. 3 D. 5

Page 7: Soal Olimpiade Komputer Part 2

E. 6 29. (Soal ini mengacu pada Deskripsi osn015.html di atas) Kali ini Pak Fauzan menggunakan 28

lembar kartu yang dinomori 1 s.d. 28 dan terurut terbalik (28 s.d. 1). Pada kolom keberapakah kartu bernomor 12?

A. 6 B. 5 C. 4 D. 3 E. 2

30. (Soal ini mengacu pada Deskripsi osn015.html di atas) Kali ini Pak Fauzan menggunakan 28 lembar kartu yang dinomori bilangan-bilangan kelipatan 3 (yaitu: 3, 6, 9, dst) sesuai urutan kartu. Pada kolom keberapakah kartu bernomor 45?

A. 4 B. 6 C. 5 D. 3 E. 2