olimpiade sain provinsi (osp) bidang informatika 2006

advertisement
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
Download