Thursday, 24 March 2016

Olimpiade Komputer



SOAL DAN PEMBAHASAN
OLIMPIADE SAINS KABUPATEN 2016
BIDANG KOMPUTER


          Apa kabar sobat? Semoga dalam keadaan sehat wal’afiat semua sekeluarga juga. Saya ingin berbagi tentang apa yang saya dapatkan untuk sobat sedunia. Saya dapat soal dan pembahasan OSK 2016 bidang komputer dari Kujawab.com. Yang sudah saya olah dan kembangkan sehingga memudahkan sobat untuk dipelajari ataupun di cetak. Nih sobat, file pdf dapat didownload dengan sekali klik di bawah ini.

http://downloads.ziddu.com/download/25293869/Olimpiade_Sains_Kota_OSK_2016_Komputer.pdf.html#.VvPyxnDF1u4.blogger

Olimpiade Sains Kota (OSK) 2016 - Komputer
1. Berapakah banyaknya bilangan prima antara 1 sampai 100 (inklusif)?
a. 15             b. 20             c. 25             d. 30             e. 35

Pembahasan:
Jawabannya adalah 25 (C)
Karena bilangan prima antara 1-100
ialah 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97 

2. Berapa banyaknya bilangan kubik (pangkat 3 dari sebuah bilangan positif) antara 2 sampai dengan 1001 (inklusif)?
a. 7              b. 8              c. 9               d. 10             e. 11

Pembahasan:
Bilangan kubik terbesar yang lebih kecil dari 1001 ialah 1000 = 103, terus bilangan kubik terkecil yang lebih besar dari 2 ialah 8 = 23, sehingga jumlah bilangan antara 2 - 10 adalah 9 yaitu 2, 3, 4, 5, 6, 7, 8, 9, 10. 1 tidak dihitung karena (13=1). Jadi jawabannya ialah 9 (C)
Benar, untuk a ≥ 0, b ≥ a, inklusif banyaknya bilangan kubik adalah:
 ¦(a,b)=  -

3. Berapakah hasil 272016 mod 26?
a. 1              b. 2              c. 3               d. 4              e. 5

Pembahasan:
272016 mod 26
= (26.1+1)2016 mod 26
= 12016 mod 26
= 1 (A)
gunakan Euler's totient function untuk menjawab soal ini.
didapatkan phi(26) = 12
persamaanya menjadi
272016 mod 12 mod 26
270 mod 26
1 mod 26
= 1(A)

4. (2m + 5) mod n = 6
Berapakah nilai m yang yang mungkin jika n bernilai 999983?
a. 200004     b. 499992     c. 499993     d. 499991     e. 499990

Pembahasan:
(2m+5) mod n = 6
(2m+5) mod 999983 = 6
2m mod 999983 + 5 mod 999983=6
2m mod 999983 + 5 =6
2m mod 999983=1
m = 499992 (B)

5. Berapa banyak string 10 bit yang banyaknya bit 1 string tersebut sama dengan banyaknya bit 0?
Catatan : bit adalah digit bilangan biner (0 dan 1).
a. 126           b. 252           c. 504           d. 512           e. 120

Pembahasan:
10!/5!x5! =252
dalam string bit, hanya ada 2 kemungkinan, yaitu 1 atau 0. jika banyaknya angka 0=banyaknya angka 1, maka, 10/2=5 adalah panjang masing-masing bit 1 dan 0.
 = 252
bit pertama harus 1, jadi sisa 9 tempat lagi dimana ada 4 angka 1 tersisa dan 5 angka 0 tersisa.
Jadi, 9! / 4!5! → 126
6. Terdapat 4 bilangan x1, x2, x3, dan x4. Jika x1 + 3  x2, x2 <= x3, x3 + 5 <= x4,
1 <= x1, x2, x3, x4 <= 40, maka banyaknya kemungkinan x1, x2, x3, dan x4 yang berbeda adalah:
a. 1256640   b. 628320     c. 52360       d. 26180       e. 169080

Pembahasan:
Misalkan y1 = x1 + 3.
Karena x1 >= 1, maka y1 >= 4
Misalkan y2 = x2 + 1
Misalkan y3 = x3 + 2
Misalkan y4 = x4 - 2.
Karena x4 <= 40, maka y4 <= 38

Tujuan dari pemisalan di atas adalah untuk mendapatkan y1, y2, y3, y4 yang memenuhi y1 < y2 < y3 < y4.
Alasan kenapa dipilih pemisalan tersebut diserahkan kepada pembaca untuk dicari sendiri.

Kemudian didapatkan
4 <= y1 < y2 < y3 < y4 <= 38.
Sekarang persoalan kita berubah menjadi mencari 4 bilangan (y1, y2, y3, y4) antara 4 sampai 38 yang terurut menaik. Persoalan ini mirip dengan soal OSK 2016 nomor selanjutnya (7)

Karena ada 35 bilangan diantara 4 sampai 38, dan dipilih 4 bilangan. Maka solusi dari persoalan ini adalah 35C4 = 52360
Perhatikan bahwa 1<=X1<=32
http://www.kujawab.com/uploads/Froztykage/1456991797_Untitled.png
Polanya 1,4,10,20,35...,5984 ( C(n+2,3) )
Yang diminta adalah 1+4+10+20+...+5984 = 52360 (c)


7. Dalam sebuah angka yang terdiri dari 6 digit, berapakah banyaknya bilangan yang semua digitnya berbeda dan harus menaik? (digit pertama tidak boleh 0)
a. 84             b. 504           c. 210           d. 5040         e. 720

Pembahasan:
Anggap aja 6 angka diambil acak lalu diurutkan jadi 9C6 =84

8. Sebuah kunci kombinasi terdiri dari 7 angka. Setiap angka dapat bernilai 0-9. Angka terakhir selalu lebih besar dari angka-angka sebelumnya. Angka pada setiap digit selalu berbeda dengan angka pada digit lain. Ada berapa kemungkinan berbeda kombinasi 7 angka tersebut?
a. 86400       b. 86040       c. 85860       d. 95680       e.15200

Pembahasan:
Bila digit terakhir adalah 9 maka ada 9P6 = 60480 kemungkinan
Bila digit terakhir adalah 8 maka ada 8P6 = 20160 kemungkinan
Bila digit terakhir adalah 7 maka ada 7P6 = 5040 kemungkinan
Bila digit terakhir adalah 6 maka ada 6P6 = 720 kemungkinan
Total: 60480 + 20160 + 5040 + 720 = 86400 (A)

9. Terdapat 2 bilangan, yaitu 720000 dan 262144. Berapa banyak bilangan berbeda yang membagi habis kedua bilangan tersebut?
a. 7              b. 8              c. 30             d. 31             e. 32

Pembahasan:
720000 = 27 x 32 x 54
262144 = 218
FPB = 2
Dengan teori bilangan didapatkan bahwa faktor dari FPB 7+1 = 8

10. Pak Dengklek akan membell sejumlah permen untuk dibaglkan pada tamunya yang datang di pesta ulang tahunnya. Dia mengetahui akan ada paling banyak 8 tamu yang datang. Karena Pak Dengklek adil, Pak Dengklek akan membagi rata permen Itu kepada tamu-tamu tersebut. jika semua tamu datang akan tersisa 6 permen. jika 1 tamu tidak datang, akan tersisa 5 permen. jika 3 tamu tidak datang, akan tersisa 2 permen. Bantulah Pak Dengklek untuk menentukan banyaknya permen paling sedikit yang harus dibeli:
a. 168           b. 504           c. 202           d. 222           e. 102

Pembahasan:
Simulasikan saja jawaban 222

11. Ali, Lia, dan Budi senang mengikuti kompetisi pemrograman. Karena mereka tidak suka bersaing, mereka mengikuti kompetisi pemrograman yang berbeda. Ali mengikuti kompetisi yang berlangsung 7 hari sekali, Lia mengikuti kompetisi yang berlangsung 3 hari sekali, dan Budi mengikuti kompetisi yang berlangsung 5 hari sekali. Pada minggu ini, Ali mengikuti kompetisi di hari Senin, Lia mengikuti di hari Selasa, dan Budi mengikuti di hari Kamis. Tapi karena mereka berkompetisi pada hari yang tidak sama, mereka merasa kesepian dan mereka menunggu-nunggu satu hari terdekat dimana mereka bisa berkompetisi pada hari yang sama. Di hari apakah itu?
a. Senin        b. Selasa      c. Rabu         d. Kamis       e. Jumat

Pembahasan:
Karena Ali hanya bisa bertanding pada hari Senin, maka A senin
kita dapat melihat bahwa Ali mengikuti kompetisi yang berlangsung 7 hari sekali yaitu pada hari Senin. 
mereka ingin berkompetisi pada hari yang sama.
jadi, dapat saya simpulkan bahwa Ali, Lia, & Budi dapat bersama - sama berkompetisi pada hari senin, karena Ali berkompetisi 7 hari sekali.

12. Manakah nilai-nilai A, B, C, D, E yang dapat memenuhi pernyataan
(A and B and C and D) or not E bernilai false?
a. A = true, B = true, C = true, D = true, E = true
b. A = false, B = false, C = false, D = false, E = false
c. A = true, B = false, C = true, D = false, E = true
d. A = false, B = true, C = false, D = true, E = false
e. A = true, B = true, C = true, D = true, E = false

Pembahasan:
Dengan Cara Trial and Error
didapatkan jawaban  C
tapi bisa juga menggunakan cara
(A and B and C and D) or Not e = false
artinya
(false) or false = false
not e = false
e = true;
a and b and c and d <> true
jadi jawabannya adalah C

13. A adalah suatu himpunan bilangan prima. B adalah suatu himpunan bilangan yang jika dibagi dengan 7, memiliki sisa bagi 3. C adalah suatu himpunan yang merupakan hasil irisan himpunan A dan himpunan B. Berapakah banyak bilangan antara 1 sampai dengan 100 yang menjadi anggota himpunan C?
a. 4              b. 5              c. 6               d. 7              e. 8

Pembahasan:
A = {2,3,5,7,11,13,14,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97}
B = {3,10,17,24,31,38,45,52,59,66,73,80,87,94}
A ∩ B = {3,17,31,59,73}
C = 5 (B)

14. Berapa banyak bilangan antara 100 sampai dengan 1000 (inklusif) yang habis dibagi 3 atau habis dibagi 5, tetapi tidak habis dibagi 9?
a. 321           b. 421           c. 221           d. 323           e. 423

Pembahasan:
Jumlah angka yang merupakan kelipatan 3 antara 100 sampai dengan 1000 = 300
Jumlah angka yang merupakan kelipatan 5 antara 100 sampai dengan 1000 = 181
Jumlah angka yang merupakan kelipatan 3 dan 5 (atau kelipatan 15) antara 100 sampai dengan 1000 = 60
Jumlah angka yang merupakan kelipatan 9 antara 100 sampai dengan 1000 = 100
Sehingga total bilangan yang mungkin adalah = 300 + 181 - 60 - 100 = 321 (A)

15. Operasi "SWAPBIT" adalah operasi untuk menukar 2 buah bit yang bersebelahan dalam suatu bilangan biner. Misalkan 0110 dapat diubah dengan 1 SWAPBIT menjadi 1010 atau 0101. Berapa banyak operasi SWAPBIT paling sedikit yang diperlukan agar membuat bilangan biner 100101010 menjadi bernilai minimum?
a. 5              b. 7              c. 8               d. 10             e. 11

Pembahasan:
Tinggal menghitung berapa digit angka 0 yang ada di belakang masing-masing digit angka 1
5 + 3 + 2 + 1 = 11 (E)

16. Ido berulang tahun ke-20 pada hari Kamis, 13 Oktober 2016. Pada hari apakah Ido lahir?
a. Senin        b. Rabu        c. Jumat       d. Sabtu        e. Minggu

Pembahasan:
Tahun kabisat dari 2016 hingga 1996 (2016-20) adalah 2016, 2012, 2008, 2004, 2000 dan 1996
Dari 2016-1996 ada 7300 hari (20x365)
7300 + 6 = 7306 (Di tambah tahun kabisat)
7306 mod 7 = 5, maka akan ada pergesaran mundur 5 hari
5 hari sebelum Kamis adalah Minggu
(E) Minggu

17. Pada sebuah jam analog terdapat jarum panjang dan jarum pendek. Di antara pukul 3 dan pukul 4, pada pukul berapakah sudut yang dibentuk jarum pendek dan jarum panjang berharga maksimum (dibulatkan ke menit terdekat)? Catatan: penghitungan sudut jarum pendek dan jarum panjang pada sebuah jam menggunakan sudut yang lebih kecil.
a. 3 lebih 45 menit             c. 3 lebih 47 menit             e. 3 lebih 49 menit
b. 3 lebih 46 menit             d. 3 lebih 48 menit

Pembahasan:
Satu lingkaran penuh ada 180º. Untuk setiap satu menit pergerakan jarum menit bertambah 180/(12*5) = 3 derajat. Sedangkan, untuk setiap satu menit, jarum jam hanya bertambah derajatnya sebanyak 180/(12*60)= 0.25 derajat. Dapat dilihat di sini, bahwa untuk setiap pertambahan menit, jumlah derajatnya juga akan lebih cepat naik, sehingga pilihan jawabannya adalah yang meinitnya paling besar, yaitu E

18. Nilai rata-rata suatu kelas pada ujian pelajaran pemrograman adalah 74. Ternyata ada tambahan satu orang lagi yang mengikuti ujian susulan, sehingga nilai rata-rata itu menjadi lebih besar dari 75. Jika nilai ujian susulan tersebut adalah 95, ada berapa siswa paling banyak di kelas tersebut (termasuk satu siswa yang mengikuti ujian susulan)?
a. 19             b. 20             c. 21             d. 22             e. 23

Pembahasan:
Misal n adalah jumlah siswa di kelas tersebut.
Total nilai sebelum ditambah siswa baru adalah
: 74(n-1)=74n-74
Total nilai setelah ditambah siswa baru adalah
: 74n-74+95=74n + 21
Rata=Rata nilai setelah ditambah siswa baru :
(74n+21)/n>75
74n+21>75n
n<21
Bilangan terbesar pertama yang kurang dari 21 adalah 20, sehingga jawabannya adalah B
Maaf, menurut soal rata-rata baru itu bukan sama dengan 75 tetapi lebih besar dari 75
((n-1)74 + 1.95)/n > 75
74n - 74 + 95 > 75n
19>n 
n=19 .. jika di cocokan  
(18.74 + 95)/19 = 75.105 ..... 
maka jawabannya (A)
-74+95 = 21, bukan 19

19. Pak Dengklek memiliki mata uang dollar dengan lembar pecahan 100, 50, 20, dan 10 yang bernilai keseluruhan sebesar 10290 dollar. Berapa banyak lembar pecahan minimal yang dimiliki Pak Dengklek?
a. 102           b. 104           c. 105           d. 106           e. 111

Pembahasan:
10290 div 100 = 102
10290 mod 100 =  90
90 div 50 = 1
90 mod 50 = 40
40 div 20 = 2
40 mod 2 = 0
Jawaban: 102 + 1 + 2 = 105 (C)
kak harusnya yang pecahan 10 nya harus ada juga :3 jadi ada 106

20. Jika A  B, B  C, dan C  D, manakah pernyataan yang pasti benar?
a. A D           b. A C           c. B D           d. B D
e. C merupakan bilangan terbesar dari 4 bilangan tersebut

Pembahasan:
*koreksi soal:
A >= B, B>=C, C<=D
A >= D
A >= C
B >=D
B <= D
C merupakan bilangan terbesar dari 4 bilangan tersebut
jawabannya B
21. Jehan mempunyai tugas beternak amuba. Menurut informasi gurunya, jenis amuba ini akan melahirkan 1 amuba baru per menit setelah menit ke-4 sejak dilahirkan. jenis amuba ini akan melahirkan satu amuba baru. Mula-mula gurunya memberikan 6 amuba yang baru dilahirkan dan menginstruksikan Jehan untuk mengamati pertumbuhan amuba per menit selama 1 jam sejak 6 amuba itu diberikan. Perkembangan amuba seterusnya diilustrasikan pada gambar berikut ini.
http://www.kujawab.com/uploads/1456925947_K16_21.PNG
Berapakah jumlah amuba pada menit ke-60 sejak 6 amuba pertama mulai hidup jika tidak ada amuba yang mati?
a. 595038720                    c. 595038725                    e. 595038728
b. 595038722                    d. 595038726         

Pembahasan:
Soal ini akan diselesaikan dengan Dynamic Programming.
Misalkan f(n) adalah banyaknya amuba pada menit ke-n.
Kita tahu, banyaknya amuba pada menit ke-n adalah banyaknya amuba pada menit sebelumnya (n-1) ditambah banyaknya amuba baru. Dimana amuba baru dilahirkan oleh amuba yang telah berumur minimal 4 menit. Amuba yang berumur minimal 4 menit adalah amuba yang pada menit ke(n-4) ia telah ada, banyaknya ada f(n-4). Dari sana didapatkan relasi rekursi f(n) = f(n-1) + f(n-4)
f(1) = 6
f(2) = 6
f(3) = 6
f(4) = 6
f(5) = f(4) + f(1) = 6 + 6 = 12
f(6) = f(5) + f(2) = 12 + 6 = 18
f(7) = f(6) + f(3) = 18 + 6 = 24
f(8) = f(7) + f(4) = 24 + 6 = 30
f(9) = f(8) + f(5) = 30 + 12 = 42
f(10) = f(9) + f(6) = 42 + 18 = 60
f(11) = f(10) + f(7) = 60 + 24 = 84
f(12) = f(11) + f(8) = 84 + 30 = 114
f(13) = f(12) + f(9) = 114 + 42 = 156
f(14) = f(13) + f(10) = 156 + 60 = 216
f(15) = f(14) + f(11) = 216 + 84 = 300
f(16) = f(15) + f(12) = 300 + 114 = 414
f(17) = f(16) + f(13) = 414 + 156 = 570
f(18) = f(17) + f(14) = 570 + 216 = 786
f(19) = f(18) + f(15) = 786 + 300 = 1086
f(20) = f(19) + f(16) = 1086 + 414 = 1500
f(21) = f(20) + f(17) = 1500 + 570 = 2070
f(22) = f(21) + f(18) = 2070 + 786 = 2856
f(23) = f(22) + f(19) = 2856 + 1086 = 3942
f(24) = f(23) + f(20) = 3942 + 1500 = 5442
f(25) = f(24) + f(21) = 5442 + 2070 = 7512
f(26) = f(25) + f(22) = 7512 + 2856 = 10368
f(27) = f(26) + f(23) = 10368 + 3942 = 14310
f(28) = f(27) + f(24) = 14310 + 5442 = 19752
f(29) = f(28) + f(25) = 19752 + 7512 = 27264
f(30) = f(29) + f(26) = 27264 + 10368 = 37632
f(31) = f(30) + f(27) = 37632 + 14310 = 51942
f(32) = f(31) + f(28) = 51942 + 19752 = 71694
f(33) = f(32) + f(29) = 71694 + 27264 = 98958
f(34) = f(33) + f(30) = 98958 + 37632 = 136590
f(35) = f(34) + f(31) = 136590 + 51942 = 188532
f(36) = f(35) + f(32) = 188532 + 71694 = 260226
f(37) = f(36) + f(33) = 260226 + 98958 = 359184
f(38) = f(37) + f(34) = 359184 + 136590 = 495774
f(39) = f(38) + f(35) = 495774 + 188532 = 684306
f(40) = f(39) + f(36) = 684306 + 260226 = 944532
f(41) = f(40) + f(37) = 944532 + 359184 = 1303716
f(42) = f(41) + f(38) = 1303716 + 495774 = 1799490
f(43) = f(42) + f(39) = 1799490 + 684306 = 2483796
f(44) = f(43) + f(40) = 2483796 + 944532 = 3428328
f(45) = f(44) + f(41) = 3428328 + 1303716 = 4732044
f(46) = f(45) + f(42) = 4732044 + 1799490 = 6531534
f(47) = f(46) + f(43) = 6531534 + 2483796 = 9015330
f(48) = f(47) + f(44) = 9015330 + 3428328 = 12443658
f(49) = f(48) + f(45) = 12443658 + 4732044 = 17175702
f(50) = f(49) + f(46) = 17175702 + 6531534 = 23707236
f(51) = f(50) + f(47) = 23707236 + 9015330 = 32722566
f(52) = f(51) + f(48) = 32722566 + 12443658 = 45166224
f(53) = f(52) + f(49) = 45166224 + 17175702 = 62341926
f(54) = f(53) + f(50) = 62341926 + 23707236 = 86049162
f(55) = f(54) + f(51) = 86049162 + 32722566 = 118771728
f(56) = f(55) + f(52) = 118771728 + 45166224 = 163937952
f(57) = f(56) + f(53) = 163937952 + 62341926 = 226279878
f(58) = f(57) + f(54) = 226279878 + 86049162 = 312329040
f(59) = f(58) + f(55) = 312329040 + 118771728 = 431100768
f(60) = f(59) + f(56) = 431100768 + 163937952 = 595038720
Jawaban : A
karena di pilihannya hanya beda satuan, dan untuk setiap menit jumlah amoeba selalu habis dibagi 6. soal dapat diselesaikan dengan menguji setiap opsi dengan teori keterbagian.
dari seluruh opsi, bilangan genap dan dapat dibagi 3 hanya opsi (A).

Deskripsi untuk soal nomor 22 - 23
Rina sedang bermain dengan string (deretan) huruf. Aturan permainannya adalah sebagai berikut. Pada satu kali permainan pemain memilih sebuah string. Selanjutnya setiap huruf akan diganti dengan string tertentu, misalnya setiap huruf A diganti dengan “AB” dan setiap huruf B diganti dengan “A”. Jika permainan dilakukan lebih dari satu kali, pergantian dilakukan pada hasil sebelumnya menggunakan aturan pergantian yang sama. Misalkan Rina memilih string "BAABA" dan bermain 1 kali, maka string itu akan berubah menjadi "AABABAAB". Jika bermain 2 kali, maka string itu akan berubah menjadi "ABABAABAABABA".

22. Dengan peraturan A diganti dengan “AB” dan B diganti dengan “A”, berapa panjang string hasil setelah dilakukan 10 kali permainan dengan string awal adalah “A”?
a. 90             b. 55             c. 144           d. 89             e. 88

Pembahasan:
String awal = "A"
f(0) = 1 (A)
f(1) = 2 (AB)
f(2) = 3 (ABA)
f(3) = 5 (ABAAB)
f(n) = f(n-1)+f(n-2)
f(10) = f(9) + f((8)
f(9) = 89
f(8) = 55
f(10) = 89+55 = 144 (C)

23. Rina melakukan permainan yang sama dengan soal sebelumnya dan dia menemukan secarik kertas di meja bertuliskan "ABABBBABABBBBBBBBBABABBBABA". Dia ingat bahwa itu adalah string hasil permainan yang pernah dilakukannya dengan string awal dan peraturan yang berbeda (seperti soal sebelumnya). Tapi dia lupa string awalnya apa dan peraturannya apa, yang hanya dia ingat adalah dia melakukan permainan sebanyak 3 kali. Rina meminta kalian mencari string awal dan peraturan penggantian untuk menghasilkan string yang ditemukan di meja tersebut!
a. string awal: “B”, peraturan: (A diganti dengan “AAA”, B diganti dengan “BAB”)
b. string awal: “ABA”, peraturan: (A diganti dengan “BAB”, B diganti dengan “ABA”)
c. string awal: “BA”, peraturan: (A diganti dengan “BA”, B diganti dengan “AB”)
d. string awal: “AB”, peraturan: (A diganti dengan “BA”, B diganti dengan “AB”)
e. string awal: “A”, peraturan: (A diganti dengan “ABA”, B diganti dengan “BBB”)

Pembahasan:
f(3)=27
simulasi aja. Kalau instingiku itu bilangan 3n
jadi f(n)=3n
f(0) = 1
f(1) = 3
f(2) = 9
Kemungkinan jawaban di sini hanya ada A & E
Untuk pilihan A String Awal tidak mungkin = "A" karena string awal: “B”, peraturan: (A diganti dengan “AAA”, B diganti dengan “BAB”)
Hanya akan membentuk pola awalan dengan string adalah "B" contoh f(1) = BAB
Jadi Jawabannya adalah E

24. Anthony ingin bermain sulap. Dia memiliki 10 kandang burung dengan kapasitas maksimal masing-masing 5 burung. Dia menyediakan beberapa burung dan meminta seorang penonton memasukkan semua burung tersebut ke dalam kandang-kandang tanpa dilihat oleh Anthony. Berapakah burung yang harus disediakan Anthony supaya dia bisa dengan pasti mengatakan dengan yakin bahwa "Setidaknya pasti ada 3 kandang yang berisi 2 burung!"?
a. 8              b. 13             c. 14             d. 19             e. 20

Pembahasan:
Kemungkinan terburuk :
5
5
2
1
1
1
1
1
1
1
Minimal ada 19 burung (D)

Deskripsi untuk soal nomor 25 - 27
Di Kota TOKI terdapat tempat yang berbentuk segi-7 beraturan. Masing-masing titik pada segi-7 tersebut harus diwarnai salah satu dari 7 warna yaitu: merah, jingga, kuning, hijau, biru, nila, dan ungu.
http://www.kujawab.com/uploads/1456925995_K16_25.PNG
Pemberian warnanya mengikuti aturan sebagai berikut :
· kuning tidak boleh bersebelahan dengan hijau.
· biru harus berada 3 titik disebelah kiri nila.
· hijau harus berada tepat disebelah merah (boleh sebelah kiri maupun sebelah kanan).
· jingga tidak boleh ditempatkan bersebelahan dengan biru maupun nila.
· ungu harus berada 3 titik dari biru.
· merah harus berada pada 2 titik dari ungu.

25. Manakah yang benar dari pernyataan berikut?
a. Ungu dan Nila berjarak sebanyak 3 titik.
b. Jingga dan merah berjarak sebanyak 3 titik
c. Hijau dan Kuning berjarak sebanyak 3 titik
d. Ungu dan Nila berjarak sebanyak 2 titik.
e. Kuning dan Merah berjarak sebanyak 2 titik

Pembahasan:
susunan nya                                nila
                                       merah          ungu 
                                    hijau                  jingga 
                                         kuning      biru 
(anggap saja itu segi 7 beraturan ) 
pernyataan yang benar :=  B. jingga dan merah berjarak 3 titik

26. Warna apakah yang berada tepat sebelah kiri jingga?
a. merah       b. hijau         c. biru           d. ungu         e. kuning

Pembahasan: tepat sebelah kiri jingga := D. ungu

27. Apabila pernyataan "merah harus berada pada 2 titik dari ungu" dihapus, warna apa saja yang mungkin berada tepat sebelah kiri nila?
a. Merah atau Biru            c. Hijau Saja                     e. Merah atau Hijau
b. Biru atau Hijau              d. Merah Saja
Pembahasan: E. hijau / merah

28. Ali, Badu dan Cica adalah tiga bersaudara (tidak kembar) dan Ali adalah yang tertua dan Cica adalah yang termuda. Hasil kali umur-umur mereka adalah 135. Ketiga orang tersebut belum berumur 10 tahun. Berapakah hasil perkalian umur Ali dan Badu?
a. 9              b. 5              c. 45             d. 15             e. 27

Pembahasan:
misalkan
A = umur Ali
B = umur Badu, dan
C  = umur Cica
dari soal, kita dapat kan bahwa A > B > C, A,B,C < 10, dan A*B*C = 135
pemfaktoran dari 135, kita mendapatkan (3* 5) → (3*3 , 5, 3) = (9,5,3)
jadi, A=9, B=5, C=3. A*B = 45 (C)

Deskripsi untuk soal nomor 29 - 31
Pada suatu ketika di kebun Pak Dengklek sedang berkumpul berbagai macam binatang. Binatang tersebut ada yang berkaki satu, ada yang berkaki tiga, dan ada yang berkaki lima. Diketahui bahwa jumlah seluruh binatang adalah 52 ekor, jumlah seluruh kaki dari binatang berkaki satu dan tiga adalah 88, dan jumlah seluruh kaki dari binatang berkaki tiga dan lima adalah 106.

29. Berapakah jumlah seluruh kaki yang ada?
a. 160           b. 128           c. 138           d. 140           e. 156

Pembahasan: Jumlah Kaki = X+3Y+5Z = 22+66+40=128

30. Berapa banyaknya binatang berkaki satu?
a. 20             b. 22             c. 30             d. 32             e. 40

Pembahasan:
Misal :
Binatang berkaki Satu : X
Binatang berkaki Tiga: Y
Binatang berkaki Lima : Z

Diketahui :
X+Y+Z=52 (Pers. 1)
X+3Y=88 -> X=88-3Y (Pers. 2)
3Y+5Z=106 (Pers. 3)
Subtitusi X pada Pers. 2 Ke Pers. 1 :
88-3Y+Y+Z=52 -> Z=-36+2Y (Pers.4)
Subtitusi Z pada Pers. 4 Ke Pers. 3 :
3Y-180+10Y=106 -> 13Y=286 -> Y=22

X+3Y=88 -> X+66=88 -> X=22

31. Berapa banyaknya binatang berkaki lima?
a. 8              b. 10             c. 18             d. 20             e. 22

Pembahasan: 3Y+5Z=106 -> 66+5Z=106 -> 5Z = 40 -> Z=8

Deskripsi untuk soal nomor 32 - 34
Sebuah keluarga besar, terdiri dari 9 orang: A, B, C, D, E, F, G, H, I. Diketahui beberapa fakta sebagai berikut:
· A adalah ayah dari E
· E adalah bibi dari D
· I adalah keponakan dari F
· H adalah nenek dari G dan ibu dari E.
· B adalah paman dari G dan suami C.
· A, H, E, dan F, sudah menikah, dan pasangannya merupakan salah satu dari 9 anggota keluarga tersebut (pasangan merupakan suami istri).
http://www.kujawab.com/uploads/tiaryahya/1456955384_Untitled.png
32. Siapakah Istri A?
a. B              b. I               c. H              d. F              e. G
Pembahasan: (C) H

33. Siapa yang dapat dipastikan adalah seorang perempuan?
a. F              b. G              c. C              d. D              e. I
Pembahasan: (C) C

34. Siapa yang merupakan anak tunggal?
a. G              b. E              c. D              d. C              e. I
Pembahasan: (A) G

35. Suami dari E adalah ...
a. A              b. B              c. C              d. F              e. H
Pembahasan: (D) F

36. Terdapat 5 katak A, B, C, D, dan E yang masing-masing berusia berturut-turut 7 minggu, 8 minggu, 9 minggu, 10 minggu, dan 11 minggu.
http://www.kujawab.com/uploads/1456926061_K16_36.PNG
Mereka akan melompat dari suatu daun teratai ke daun teratai lainnya. Mereka telah meletakkan beberapa panah diantara daun, dan mereka semua memulai pada sisi kiri seperti pada gambar.Ketika seseorang melompat ke suatu daun, dia menunggu sampai ada katak lain yang datang ke daun tersebut. Kemudian diantara dua katak pada daun tersebut, katak yang lebih tua akan melompat ke katak lain mengikuti panah yang tebal, sedangkan yang lebih muda mengikuti panah yang tipis. Bagaimanakah posisi akhir mereka pada sisi kanan dari gambar di atas (dari paling atas)?
a. B – C – D – A – E          c. B – D – C – E – A                    e. A – B – C – D – E
b. B – D – C – A – E          d. B – C – D – E – A

Pembahasan: B-D-C-A-E (B)
1457095812_1456926061_K16_367.png

37. Bu Dengklek sedang ingin mempersiapkan dua makanan, dan kedua makanan tersebut terbuat dari 4 bahan yang sama yaitu daging, tomat, ikan dan wortel.
http://www.kujawab.com/uploads/1456926141_K16_37.PNG
Pertama, Bu Dengklek harus memasak ikan dan wortel secara bersamaan dan membutuhkan waktu 5 menit (S1). Kemudian Bu Dengklek memasak daging dan tomat bersamaan dan membutuhkan waktu 5 menit (S2). Kemudian hasil dari daging dan tomat tersebut dibagi menjadi tiga bagian (S9, S5, S4). Untuk proses S4, Bu Dengklek menggabungkan hasil dari S2 dan S1 dan memprosesnya selama 5 menit. Begitu seterusnya sampai makanannya jadi, dan setiap proses itu membutuhkan waktu 5 menit. Tentulah bisa saja dua proses berjalan bersamaan, dan waktu total untuk menyelesaikan kedua makanan itu menjadi lebih singkat. Berapakah waktu minimum yang diperlukan Bu Dengklek untuk menyelesaikan masakannya
a. 20 menit      b. 15 menit           c. 30 menit       d. 25 menit           e. 55 menit

Pembahasan:
Terdapat 11 proses dan 2 proses bisa dilakukan bersamaan, serta setiap proses dibutuhkan waktu 5 menit. Sehingga waktu minimum yang dibutuhkan adalah:
ceil(11/2) * 5 = ceil(5.5) * 5 = 6 * 5 = 30 (C)

38. Pak Dengklek ingin membawa belanjaannya dari pasar ke rumahnya hanya melalui suatu jaringan jalan tol. Pada setiap ruas jalan tol ia harus membayar sejumlah uang yang ditunjukkan dengan angka-angka pada gambar berikut.
http://www.kujawab.com/uploads/1456926197_K16_38.PNG
Ia ingin memilih lintasan dengan biaya yang paling minimum. Berapa biaya minimum yang harus disediakan Pak Dengklek untuk sampai ke rumahnya?
a. 17             b. 18             c. 19             d. 20             e. 21

Pembahasan:
gunakan Greedy untuk memecahkan soal ini, jalur yang paling minimum adalah (3-2-11-3) = 19 (C)

Istilah Greedy sepertinya kurang tepat. Karena berdasarkan definisi, Greedy akan mengambil pilihan terbaik (saat ini) untuk setiap langkah. Sehingga pada langkah pertama (kalau Greedy) akan memilih jalan dengan panjang 2, karena paling pendek diantara pilihan lain.
Jawaban benar, namun menurut saya sebaiknya tidak menggunakan istilah Greedy. Takut menyesatkan. Hehehe
yang diminta adalah biaya minimum, diperoleh 19.

Deskripsi untuk soal nomor 39 - 40
Terdapat suatu permainan Grid berbentuk petak-petak yang tersusun 3x3 yang dilengkapi dengan 4 tombol, dengan bentuk seperti seperti pada Gambar 1. Jika sebuah tombol ditekan, angka-angka pada keempat petak di sekelilingnya akan berputar searah jarum jam. Susunan pada Grid 1 akan ditulis per baris sebagai berikut 1-4-5;7-3-2;8-9-6.
http://www.kujawab.com/uploads/1456926306_K16_39.PNG
Contoh: diberikan susunan semula seperti pada Grid 2, jika tombol A ditekan maka agka-angka pada petak menjadi seperti pada Grid 3.
http://www.kujawab.com/uploads/1456926330_K16_39b.PNG
39. Jika dari susunan pada Grid 1, kemudian dilakukan penekanan tombol A dua kali dan kemudian tombol C satu kali, maka susunannya akan menjadi (urutan ditulis dari kiri ke kanan
a. 3-7-5;4-6-9;8-2-1           c. 4-1-3;5-2-6;7-8-9           e. 1-2-3;4-9-8;7-6-5
b. 3-7-5;4-9-1;8-6-2           d. 1-2-3;4-5-6;7-8-9

Pembahasan:
setelah melalui 3 kali penekanan. susunannya berubah menjadi 3-7-5;4-9-1;8-6-2. 

40. Berapa penekanan tombol minimal (tombol apa saja) yang diperlukan untuk menyusun susunan angka pada Grid 2 menjadi susunan pada Grid 1 di atas?
a. 3              b. 4              c. 5               d. 6              e. 7

41. Apa keluaran program diatas?
var
arr : array[1..30] of longint = (5,5,7,8,6,8,5,8,4,6,6,3,4,
      2,8,0,9,2,3,4,7,8,5,4,5,3,9,8,0,3);
i, c : longint;
begin
c := 0;
for i:=1 to length(arr) do begin
inc(c, arr[i]);
end;
writeln((c/length(arr)):0:2);
end.

a. 3.17          b. 4.17          c. 5.17          d. 6.17          e. 7.17

Pembahasan:
Itu mungkin jumlah semua data di bagi dengan panjang data arr 
jadi jumlah data [1] - data [30] / 30 = 155/30 = 5.1666666666667 karena yang dipakai 2 angka dibelakang koma jadinya 5.17

Deskripsi untuk soal nomor 42 - 43
var
i, n, c : longint;
begin
readln(n);
c := 0;
for i := 1 to n do begin
inc(c, i);
end;
writeln(c);
end.

42. Apakah output program di atas apabila masukan n bernilai 10?
a. 10             b. 45             c. 55             d. 65             e. 76

Pembahasan:
mungkin sama dengan yang nomer 41 .. itu juga pertambahan dari semua nilai i, maka 1+2+3... +10
pakai prinsip 1+10 + 2+9... 5+6 maka akan menjadi 11 x 5 = 55 (C)

43. Apakah output program di atas apabila masukan n bernilai 1000?
a. 1000         b. 5500         c. 5550         d. 505000     e. 500500

Pembahasan:
1+2+3 ...... +1000 
pakai prinsip 1000+1 = 1001 * 1000/2 = 1001*500 = 500500 (E)

44.
var
i, j, n, r, c, d : longint;
begin
readln(n, r);
c := 0;
for i := 1 to n do begin
d := 1;
for j := 1 to i do begin
d := d * r;
end;
inc(c, d);
end;
writeln(c);
end.
Jika diberi input 20 2, maka outputnya adalah?
a. 1048576             c. 1048575              e. 2097151
b. 2097152             d. 2097150

Pembahasan:
program bakal melaksanakan penjumlahan deret geo dari 2^1 ... 2^20 
i:= 1 to n 
setiap i bakal ngelaksanain sebanyak i kali => r^i
berhubung n itu 20 dan r itu 2 maka 
=> 2(2^20 - 1 ) / 2-1
=> 2(1048575)/1
=> 2097150 (D)

45.
function tis(a : integer) : longint;
begin
if(a < 10) then tis := a
else tis := tis(a div 10) * 3 + tis(a div 50);
end;
Berapakah hasil dari pemanggilan fungsi tis(143)?
a. 8              b. 9              c. 10             d. 11             e. 12

Pembahasan:
Tis(143) a= 143 
143>10 maka tis(143 div 10) * 3 + tis(143 div 50)
= tis(14)*3 + tis(2)
karena tis(14) 14>10 maka
tis(14 div 10) * 3 + tis(14 div 50)
tis(1) * 3 + tis(0)
karena semuanya tis a<10 maka tis(a) = a 
jadi 1*3 + 0 = 3 
masukan 3 ke tis(!4)
3*3 + 2 = 11 (D)

46.
const
MAXS = 10;
var
i, n : integer;
A : array[1..10] of integer;
procedure klik();
begin
dec(i);
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.

Apakah output program di atas jika diberi input 8?
a. 240           b. 235           c. 237           d. 330           e. 327

Pembahasan:
Program diatas memiliki makna yang sama dengan fungsi berikut:

Bila kita masukkan nilai x = 8 maka:
f(8) = A[1]*A[2] + A[2]*A[3] + A[3]*A[4] + A[4]*A[5] + A[5]*A[6] + A[6]*A[7] + 
         A[7]*A[8] + A[8]*A[9]
      = 1*2 + 2*3 + 3*4 + 4*5 + 5*6 + 6*8 + 8*7 + 7*9 = 237 (C)

Deskripsi untuk soal nomor 47 - 48
a := 13; b := 1;
while(a < n) do
begin
a := a + b;
b := b + 1;
end;
writeln(a, ' ', b);

47. Dari pilihan berikut ini, berapakah nilai n yang TIDAK membuat nilai a di akhir adalah 79?
a. 68             b. 69             c. 70             d. 71             e. 72

Pembahasan:
program a mengalami penambahan +1 +2 +3 dst sampai nilai a >= n 
jadi  N:= 79 
a = 13 .... 68 79
jawabanya :=  A. 68 

48. Berapakah nilai n maksimum yang membuat nilai b di akhir bernilai 15?
a. 134           b. 133           c. 119           d. 118           e. 117

Pembahasan:
b:= 15 
a = 13 
a akhir = 13 + 1+...+14= 118 
jadi nilai n haruslah :=  n  <=118
berhubung dipilihan nilai max yang memenuhi persamaan adalah 118

Deskripsi untuk soal nomor 49 - 50
function
begin
if y = 0 then naon := 1
else if y = 1 then naon := x
else naon := naon(x, y div 2) * naon(x, y div 2 ) * naon(x, y mod 2);
end;

49. Berapakah hasil dari naon(3, 8)?
a. 11             b. 24             c. 6561         d. 512           e. 81

Pembahasan:
(3,8) => (3,4)*(3,4)*(3,0) => 81*81*1 => 6561 (C)
(3,4) => (3,2)*(3,2)*(3,0) => 9*9*1 => 81
(3,2) => (3,1)*(3,1)*(3,0) => 3*3*1 => 9

50. Berapa kalikah fungsi naon dipanggil pada pemanggilan naon(4, 13)?
a. 13             b. 15             c. 20             d. 21             e. 22

Pembahasan:
(4,13) => hasilnya 21 + 1 [manggil dirinya sendiri yaitu (4,13) => 22 (E) jawaban nomor 50
(4,13 ) => (4,6) (4,6) (4,1) => 7*2 + 1 => 9*2 [ (4,6) ada dua dan setiap (4,6) bakal manggil 9 naon] + 3 ( manggil dirinya sediri ) => 21
(4,6) => (4,3) (4,3) (4,0) => 3*2 [ (4,3) ada 2 nah setiap (4,3) bakal manggil 3 naon] + 3 ( manggil dirinya sendiri ) => 9 
(4,3) => (4,1) (4,1) (4,1) => 3 ( manggil dirinya sendiri ) 
#setiap (4,1) dan (4,0 ) tidak akan memanggil fungsi naon lain, melainkan langsung menghasilkan nilai x atau 1

Oh ya sobat, saya bercerita sedikit ya tentang pengalaman hidup saya. Dulu saya ketika kelas X, salah seorang guru yang menangani Olimpiade Nasional di sekolahku datang perkelas. Kebetulan beliau juga mendatangi kelasku, beliau bertanya “Dulu sewaktu SMP disini ada yang pernah ikut Olimpiade?” Salah satu temenku maju untuk memperkenalkan diri bahwa dia dulu sewaktu SMP pernah ikut Olimpiade juara 4 di Primagama. Aku sedikit minder dan berpikir-pikir sejenak sambil berkata dalam hati “Dulu aku pernah ikut olimpiade apa ya…?”. Kemudian guru itu mendata temenku itu. Kemudian aku check in di internet tentang olimpiade SMA ternyata tidak hanya 1 tetapi 9 bidang meliputi Astronomi, Kebumian, Geografi, Ekonomi, Kimia, Fisika, Biologi, Matematika, dan Komputer. Saya terkejut ketika membaca bertemu dengan kata Komputer. Imajinasi saya keluar sambil sedikit berkhayal “Soal Komputer itu seperti apa ya? Apa sama seperti yang diajarkan disekolahan seperti MS. Word atau MS. Excel? Pasti seru!!!”. Kemudian saya searching lagi soal olimpiade komputer di mbah google. Saya semakin mengerutkan kening ketika membaca soalnya sambil berkata “Maksudnya gimana ini?”. Lalu saya coba-coba ikut bimbingan belajar disekolahan tentang bidang TIK dan mengajukan diri untuk ikut olimpiade, nah kebetulan juga orangnya yang ikut 3 tapi salah satu dari mereka tidak pernah masuk dan giliran aku sebagai pengganti dia. Jadi totalnya pas 3 anak. Ketika pertama saya bimbingan belajar ternyata saya ketinggalan 3 pertemuan, tiba-tiba yang dipelajari Matriks, belajar memasukkan algoritma ke Pascal, lalu diberi PR tentang matriks tersebut. Saya hanya pasrah dan bertawakkal. Nah, mulai dari situ saya semakin giat mencari-cari soal-soal yang berhubungan dengan Pascal itu. Ternyata seru juga sobat.

Ketika Olimpiade semakin dekat jadwalnya. Saya dan 2 teman saya itu semakin rajin masuk sekolah untuk mengikuti bimbingan belajar secara sistem kebut. Yang pada akhirnya, namaku berada di urutan 40. Gara-gara soal 50 yang kubisa 22 sehingga ku tak percaya diri sampai akhirnya ku hanya bisa menjawab soal 22 itu tadi. Tapi itu akan ku jadikan motivasi hidup, bahwa tahun depan saya masih bisa ikut dan harus lebih giat dan rajin lagi belajarnya. Maaf sobat, berbagi pengalaman hidup nih. Sekali lagi saya minta maaf jika ada kata-kata yang salah dan menyinggung perasaan sobat. I’m sorry. Semoga pengalamanku diatas dapat memotivasi sobat. Thank you for visiting in my blog. Thank you…