Anda di halaman 1dari 4

Jadi bagi yang ingin memulai karir di dunia olimpiade, sebaiknya dibaca terlebih dahulu ke-3 jenis

soal yang akan saya beri dan akan saya bahas juga di posting ini. Ke-3 nya adalah Algoritma,
Aritmatika dan Logika.
Algoritma
Apa algoritma untuk memindahkan isi dari 2 gelas yang isinya berbeda? Dimisalkan, ada 2 gelas,
gelas A berisi teh dan gelas B berisi kopi. Bagaimana cara menukar isi gelas A dan gelas B?
Pembahasan :
Di bawah ini adalah cara meng-solve problem di atas secara algoritma (secara sistematik).
Deklarasi (penyediaan barang - analoginya sih gitu :P)
Sediakan sebuah gelas tampungan (temporary).
Deskripsi (proses atau pengerjaan)

1.

Pindahkan isi gelas A (teh) ke dalam gelas tampungan (awalnya kosong).

2.

Pindahkan isi gelas B (kopi) ke dalam gelas A (kosong). (setelah ini gelas A berisi kopi)

3.

Pindahkan isi gelas tampungan ke dalam gelas B (kosong). (setelah ini gelas B berisi

4.

kopi dan teh siap di minum. :P (maaf, alur ke-4 hanya bercanda)

teh)

Jadi, bisa dilihat bahwa cara menyelesaikan sesuatu secara algoritma harus lah secara sistematik.
Algoritma itu sendiri berarti tata cara melakukan sesuatu secara berurut, maka penyelesaian sebuah
problema - itu harus di lakukan dengan sistematik dan real (bukan bo'ongan).
Aritmatika
Tentukan digit terakhir dari 1000! (dibaca "1000 faktorial").
Pembahasan :
Kita tentu tidak mau menjadi orang kurang kerjaan yang mencari 1000!.
ohya. apakah kalian udah tau apa itu faktorial?
Faktorial tuh gini lho.
3! = 3.2.1 = 6
4! = 4.3.2.1 = 24
0! = 1
Tentu kalian tidak mau menghitung 1000! = 1000.999.998. ...dst... hahaha. tentu tidak.
Sebenarnya kunci dari mengerjakan soal seperti ini adalah menemukan polanya. Kita hanya perlu
mencari perulangan pola yang di hasil kan digit terakhirnya.
berikut pola n! untuk mencari digit terakhir dari 1000! :
untuk n! = n.n-1.n-2. ...dst...
untuk 1! = 1
untuk 2! = 2
untuk 3! = 6
untuk 4! = 24 (digit terakhir 4)
untuk 5! = 120 (digit terkahir 0) (nah ini dia!!)
rupanya pada 5! - digit terakhirnya adalah 0. coba kita pikirkan baik-baik, jika 0 dikalikan dengan
apa pun, maka bilangan tersebut hasilnya juga akan 0.
maka n! untuk n>5, digit terakhirnya selalu 0.
yuk kita buktikan.

untuk 6! = 720
untuk 7! = 5040 (nah! digit terakhirnya selalu 0 kan?)
jadi dapat di tentukan bahwa digit terakhir dari 1000! faktorial adalah 0. :)
Logika
Di sebuah pulau terdapat dua golongan penduduk, ksatria yang selalu bicara jujur, dan yang lain
adalah penipu yang selalu berbohong. Jika anda bertemu dengan dua orang A dan B. Golongan
apakah yang tepat untuk A dan B jika A berkata 'B adalah seorang ksatria' dan B berkata 'golongan
kami berbeda'?
apakah A seorang ksatria dan B adalah penipu? atau..
apakah sebaliknya? atau..
duadua nya adalah ksatria? atau.. duaduanya adalah penipu? atau..
mereka tidak pasti adalah penipu ataupun ksatria?
Pembahasan:
Cara untuk menyelesaikan soal seperti ini adalah menelusuri pernyataan yang ada.
Pernyataan yang kita dapat adalah Ksatria=Jujur, Penipu=Berbohong, lalu..
A = 'B adalah seorang ksatria'
B = 'Golongan kami berbeda'
jadi coba kita telusuri percakapan mereka
1.
awalnya A mengatakan bahwa B adalah seorang ksatria. maka B pastilah berkata jujur.
2.
B berkata jujur bahwa 'golongan kami berbeda'. maka A pasti pembohong karena golongan B
adalah yang jujur=ksatria, tentu A sebaliknya karena B jujur berkata bahwa golongan mereka
berbeda. nah, mari kita lanjutkan..
3.

A berbohong berkata bahwa 'B adalah ksatria' (eh! lho kok?) artinya B adalah pembohong.

4.
Untuk kesimpulan di atas kita telah menemukan bahwa A dan B itu adalah pembohong. tapi?
apakah betul? mari kita telusuri lagi.
5.
Jika B berbohong, maka B berbohong berkata bahwa 'golongan kami berbeda'. maka
sebenarnya ia mengatakan 'golongan kami sama' - yaitu samasama pembohong!!
Jadi kita dapat menyimpulkan sesuatu dengan menelusuri pernyataan nya. tapi tidak semua soal
logika dapat di selesai kan dengan cara ini. tapi gunakan lah logika.

3 jenis soal di atas adalah pengenalan untuk kalian semua untuk memasuki olimpiade komputer.
namun untuk soal algoritma, itu tidak akan muncul dalam soal teori, itu akan hanya muncul pada
saat kalian ingin membuat program pada sesi praktek dan tentu itu di tulis dengan bahasa
pemograman, bukan dengan bahasa manusia. :P hahaha.

Tips OSK dan OSP Bidang Informatika


Setelah lulus dari SMA dan tidak bisa lagi mengikuti olimpiade sains, saya jadi sering diminta sekolah
untuk melatih adik-adik kelas dalam menghadapi olimpiade informatika.
Di sini saya ingin membagi tips untuk para siswa yang akan menghadapi OSK dan OSP di bidang
informatika (dulu disebut komputer). Tips-tips berikut ini diambil berdasarkan pengalaman saya sendiri
sewaktu saya mengikuti OSK dan OSP 2008.
Secara umum, materi seleksi olimpiade bidang komputer/informatika terbagi menjadi tiga bagian, yaitu:

Analitik dan Logika


Ini bagian yang mengasah otak; kecerdasan dan kreativitas kita dalam memahami dan menyelesaikan
masalah sangat diperlukan di sini.
1.

Beli buku-buku teka-teki logika. Saya tidak tahu sih masih ada atau tidak, tapi seswaktu zaman
saya dulu ada banyak buku seperti itu di Gramedia. Kalau ada, beli dan pelajari.

2.

Kerjakan soal-soal logika di internet. Ada banyak kok. Contohnya di BrainBashers.

3.

Main game NDS Prof. Layton and the Curious Village. Hehe serius. Game ini benar-benar
mengasah otak dan tipe soalnya pun sangat cocok untuk latihan.

4.

Pelajari tipe-tipe soal tahun lalu, karena biasanya tidak akan beda jauh.

5.

Pelajari buku pelajaran Matematika kelas X bab Logika Matematika.

6.

Kuasai semua hukum de Morgan, silogisme, dan modus-modus dalam penarikan kesimpulan.

Aritmetika
Ini sebagian besar merupakan pengembangan dari ilmu yang kita pelajari di sekolah. Jadi, pemahaman
materi-materi Matematika di SMA sangat membantu.
1.

Pelajari buku pelajaran Matematika kelas XI bab Peluang.

2.

Kuasai aturan-aturan mencacah (aturan penjumlahan dan aturan perkalian).

3.

Kuasai rumus-rumus kombinatorik seperti permutasi, kombinasi, dan peluang.

4.

Kuasai hukum keterbagian.

5.

Kuasai operasi modulus.

6.

Kuasai matriks dan operasi-operasinya.

7.

Kuasai penyelesaian sistem persamaan linear.

8.

Kuasai deret-deret bilangan yang umum seperti deret Fibonacci, deret bilangan segitiga, dll.

9.

Kalau bisa pelajari materi olimpiade Matematika yang sederhana.

10. Pelajari teori bilangan.


Tenang saja, materi-materi berat, seperti statistik, kalkulus, dan trigonometri di luar lingkupan dan tidak
akan diujikan.

Algoritma dan Pascal


Nah, ini materi paling sulit karena (biasanya) tidak diajarkan di sekolah. Kita harus berinisiatif sendiri untuk
mulai mempelajarinya. Jangan takut, ada banyak sumber di toko buku dan internet.
1.

Beli buku pemrograman Pascal apa saja dan pelajari sintaks-sintaks dasarnya. Tidak perlu
mempelajari

sampai

record/file

atau

semacamnya,

karena

belakangan

ini

OSK/OSP hanyamenekankan

pada

algoritma

sehingga

yang

digunakan

adalah

bahasa

pseudopascal bukan Pascal aslinya.


2.

Pelajari analisis kompleksitas algoritma.

3.

Kuasai fungsi dan prosedur rekursif. Ingat, kuasai bukan hanya pelajari, karena belakangan ini
banyak sekali soal semacam ini keluar.

4.

Pelajari algoritma FPB metode Euclid.

5.
Pelajari berbagai algoritma sorting (bubble, insertion, quick, merge, dll) beserta kompleksitasnya.
Tips yang paling penting adalah: latihan, latihan, dan latihan! Kerjakan soal-soal tahun lalu sebanyak
mungkin. Bertanyalah kepada senior yang pernah mengikuti OSK/OSP informatika dan minta nasihat.

Referensi Lain

Kerjakan soal-soal di Project Euler dengan bantuan program Pascal.

Soal-soal OSK/OSP tahun-tahun lalu bisa didapatkan di blog Angelina Veni.

Kerjakan soal-soal di TOKI Training Gate.


Dan yang terakhir, jangan lupa berdoa dan memohon diberikan yang terbaik.
Good luck!

Anda mungkin juga menyukai