Chapter 03

Love on IOI

Problem Solution

Disclaimer : Masashi Kishimoto

Pairing : SasuHina, ShikaTema

Rated : T

Shikamaru's POV

"Tadaima" Kataku saat aku sedang memasuki sebuah rumah dengan motor matic ku yang langsung kuparkirkan dengan rapi di depan buffet yang ada di ruang tamu.

"Pulang siang lagi ya" Sapa seseorang dengan rambut hitam dan nada sinis serta tatapan tajam yang menusuk.

"Ada bimbingan, seminggu lagi aku akan berangkat ke Oto untuk ikut OSN" Kataku dengan nada malas sambil berjalan menuju kamarku yang berada di kamar paling depan di sekitar ruang tamu.

"Aku harus bisa menyelesaikan soal tersebut sebelum Sasuke" Kataku dengan nada semangat. Aku memang sedang semangat karena aku akan malu bila aku kalah lagi kali ini.

Tahun lalu aku pulang dengan tangan hampa akibat aku dengan sangat nistanya menjadi mual dan muntah saat aku tidak terbiasa naik lift. Sekarang, kutepis aja kebiasaan tersebut dengan naik turun lift di Konoha Departemen Store tiap hari.

Akhirnya, jadilah aku menjadi juara harapan perunggu alias juara empat akibat hal sepele yaitu lift. Kudesahkan nafasku pelan sambil membuka laptopku dan menancapkan modemku lalu menghubungkan laptopku menuju internet dengan modemku yang berkecepatan up to 2 Mbps.

Aku akan ikut OSN lagi tahun ini. Jadinya, aku harus menang kali ini. Ini kesempatan terakhirku untuk ikut olimpiade di SMA. Aku harus ikut IOI kali ini.

Sebuah bayangan wanita terlintas di benakku. Yah...! Aku tau siapa dia, wanita berambut pirang dengan kucir empat sedang tersenyum manis dibenakku.

"Uhh...!" Erangku sambil memegangi kepalaku karena benak tersebut. Dia adalah orang yang sangat kusukai. Senyuman manisnya, wajah imutnya dan sikapnya yang cenderung childish bisa dengan mudah memikat hatiku yang sedang berada pada masa remaja ini.

Bahkan aku sempat mengungkapkannya beberapa minggu yang lalu padanya via sms. Tapi katanya dia ingin lebih konsen ke belajar aja sehingga dia menolak ajakanku. Tapi aku gak ngajak untuk pacaran kok.

Otakku yang lebih kearah komputer ini mungkin tidak cocok untuk diajak pacaran. Apalagi oleh kata-kata romantisme yang menyayat hati, aku aja langsung bergidik memikirkan hal tersebut.

Sudah beberapa hari ini aku mengikuti bimbingan untuk olimpiade bersama dengan adik kelasku, Sasuke. Pelajaranku pun sepertinya mulai terbengkalai dan akibatnya, aku jadi pengen ketemu dengan Temari. Yah...! Temari adalah teman sekelasku, karena faktor kebiasaanlah yang membuatku jatuh hati padanya.

Aku pun membuka facebook dan langsung menuju kearah profil Temari untuk melihat beberapa fotonya yang cantik dan imut. Beberapa dari foto tersebut bahkan kudownload agar aku bisa melihatnya waktu offline, atau ketika aku benar-benar tidak punya uang sehingga aku tidak bisa mengisi kuota modemku.

Belum puas memandangi foto Temari yang ada di albumnya di facebook (yah...! yang asli jauh lebih cantik lah) aku melihat di dindingnya yang berisi status. Status yang ada di dinding Temari, semuanya berisi update tentang aktivitasnya. Dia termasuk orang yang anti galau sehingga kebanyakan statusnya adalah mengeluh karena banyak tugas.

Kulihat beberapa informasi tentang Temari yang memang ditulis dalam bahasa Inggris. Aku tau dia memang pintar berbahasa Inggris, tapi ayolah, itu merepotkan sekali.

Krieett...!

Pintu kamarku berderit dengan cukup keras dan masuklah seorang pria dewasa dengan rambut hitam kebiruan dan model rambut yang sama denganku. Wajahnya pun sangat mirip denganku, hanya saja dia masih terlihat dewasa dibandingkan denganku yang berwajah sangat kekanak-kanakan ini.

Aku langsung menekan tombol darurat agar tidak ketahuan kalo aku dengan diam-diam mengintip foto seekor (?) wanita yang dengan tidak sengaja ku sukai di kelasku.

"Lagi ngapain kau ?" Tanya orang tersebut dengan nada santai. Dia adalah ayahku, aku seringkali mendiskusikan beberapa masalahku bersamanya. Langsung kupencet Ctrl + tab (Buat pindah antara tab di Mozilla) untuk menyembunyikan foto tersebut.

"Lagi ngerjain soal, aku berlomba sama temanku yang juga ikut. Bisa bantu aku ?" Pintaku pada Otou-chan yang memicingkan matanya melihat soal yang ada dilayar monitorku.

"Number Divisibility. Apa artinya coba ? Kau tau kan Otou-chan tidak bisa berbahasa Inggris" Kata Otou-chan sambil melihat dengan seksama soal yang kuberikan tersebut. Kutepuk jidatku karena baru saja menyadari kalo Otou-chan tidak bisa berbahasa Inggris.

"Apakah satu tiga kali (111) bisa dibagi tiga ?" Tanyaku kepada Otou-chan sambil membuka kalkulator menghitung hasil yang akan diperoleh jika 111 dibagi tiga.

"Bisa dong. Kan jumlah semua digit dari 111 ada tiga. Jadi bisa dibagi tiga" Kata Otou-chan sambil ikut menghitung 111 dibagi dengan tiga.

"Bener nih bisa ?" Kataku tak percaya sabelum aku bisa membuktikannya sendiri dengan kalkulator milikku. Kuperoleh 37 dan aku pun puas dengan hitunganku sendiri.

"Sekarang, apakah dua belas enam kali () bisa dibagi tujuh ?" Tanyaku yang langsung membuat Otou-chan menatapku heran.

"Dari mana kau tau hal itu ? Kau aja belum menghitungnya" Kata Otou-chan dengan nada penasaran kearahku. Aku hanya menunjukkan kearah bawah soal yang merupakan tempatnya contoh.

"Lihat, 3 1, artinya berapa angka satu yang bisa dibagi tiga. Jawabnya 3 angka satu (111) bisa dibagi tiga" Kataku sambil menunjuk kearah contoh pertama.

"Lalu yang kedua, 7 12. Berapa angka dua belas yang bisa dibagi oleh tujuh. Jawabnya enam angka dua belas (121212121212) habis dibagi tujuh" Kataku sambil menunjuk sebuah contoh lagi yang tergeletak di bawahnya.

"Lalu yang terakhir, 9901 1. Berapa angka satu yang bisa dibagi 9901. Jawabnya, dua belas angka satu bisa dibagi dengan 9901" Kataku sambil menunjuk contoh ketiga yang berada dibarisan paling bawah dari soal tersebut.

"Lalu, apa masalahnya ?" Tanya Otou-chan tampak tak mengerti dengan pembahasanku barusan.

"Mungkin agak terdengar aneh, tapi aku disuruh untuk menemukan rumus bagaimana bila ada suatu bilangan berulang yang habis dibagi bilangan yang lain" Kataku sambil menatap laptopku sambil terus memikirkan solusi agar bisa memecahkan soal tersebut sebelum si ayam itu berhasil memecahkannya.

"Maksudmu ?" Tanya Otou-chan sambil menatapku dengan bingung.

"Yah...! Apakah ayah tau berapa banyak angka empat dibutuhkan untuk dapat menjadi kelipatan 13 ?" Tanyaku pada Otou-chan yang masih kelihatan bingung tersebut. Ayahku menggeleng pelan sambil tetap berpikir dengan serius.

"Aku disuruh untuk mencari cara menentukannya, yang paling effisien dan paling efektif" Kataku yang langsung disambut dengan anggukan pelan dan juga kata-kata 'ooohh' yang keluar dari mulut Otou-chan yang berbentuk bulat.

"Aku belum pernah tau kalo ada rumus seperti itu, dan kayaknya sih gak ada. Kau harus mencobanya satu persatu" Kata Otou-can dengan wajah serius kearahku.

"Tidak bisa. Nomor maksimal yang bisa disimpan memori komputer adalah dua pangkat 64 atau ada sekitar seribu triliun. Itu tidak cukup. Lagipula, bagaimana caranya untuk menambah digit seperti itu. Komputer tidak seperti manusia yang dengan mudah menambahkan saja, mereka hanya mengerti aritmatika" Kataku menjelaskan pada Otou-chan tentang masalah yang kuhadapi. Otou-chan tertawa mendengar ucapanku barusan.

"Gomen-gomen. Aku gak tau kalo komputer hanya bisa menyimpan sebanyak itu. Tapi kok kalkulator dilaptopmu bisa menghitung lebih dari delapan belas digit ?" Kata Otou-chan.

"Itu sulit, harus menggunakan teknik yang rumit. Padahal sebenernya teknik ini hanya menggunakan ad-hoc biasa, gak perlu serumit itu lagi" Kataku sambil tetap pusing memikirkan bagaimana caranya agar aku bisa menyelesaikan soal yang membingungkan ini.

"Kalo untuk nambah digit sih, kalikan aja dengan sepuluh, lalu tambahkan dengan digit itu lagi. Jadi kan ?" Kata Otou-chan sambil keluar dari kamarku dengan seulas senyuman lembut.

"Perkalian dengan sepuluh, lalu tambah lagi" Kataku sambil berpikir tentang apa yang Otou-chan katakan tentang penambahan digit itu.

"Sou ka" Kataku begitu mendapatkan sebuah petunjuk dari ucapan sederhana Otou-chan tadi. Aku langsung bergegas membuka editorku dan mengetikan beberapa kode yang sebenernya cukup sederhana.

Benar memang dugaanku, ini hanya menggunakan logika ad-hoc biasa. Bukan dengan teknik yang rumit seperti yang aku pikirkan tadi.

Seperti yang ayah katakan. "Untuk menambah digit, kalikan dengan sepuluh dan tambahkan digit tersebut"

Dalam teori sisa alias modullo ada sebuah keidentikan dalam rumusnya.

Bila tiga puluh dibagi empat menghasilkan sisa dua, maka tiga puluh dikali tiga (sembilan puluh) dibagi empat akan menghasilkan sisa dua dikali tiga (enam).

Maka dari itu, dengan berbekal keidentikan tersebut, tinggal kalikan sisa dengan sepuluh dan tambahkan dengan input pertama lalu hitung lagi sisanya. Bila sudah habis (sisanya sama dengan nol) tinggal hitung berapa banyak pengulangan yang dilakukan komputer tadi.

Cara yang sangat mudah, tak kupercaya bila aku harus pusing-pusing memikirkan cara ad-hoc yang begitu mudah ini. Kuketikkan kode yang sederhana tersebut dengan cepat sambil sesekali mengecek kode tersebut dari kesalahan.

"Sempurna" Gumamku sambil mengompile kode tersebut untuk melihat hasilnya yang ternyata benar sekali. Aku hanya tersenyum sinis dan langsung men-submit kodeku.

Kulihat username Sasuke belum sampai di daftar submission, hehe...! Aku yang menang, Sasuke.

"Haaaah...!" Kataku dengan nada terkejut begitu melihat user Sasuke yang tiba-tiba saja muncul setelah submissionku mendapat predikat AC (accepted). Kulihat waktu yang digunakan Sasuke untuk mensubmit jawabannya.

"Sialan...! Waktunya benar-benar sama persis" Kataku sambil mengumpat pelan merutuki jawaban Sasuke yang sama persis dengan jawabanku tersebut.

"Tapi, kenapa jawaban Sasuke ada dibawahku ya ?" Kataku begitu melihat history yang ada di submission tersebut. Jawaban yang berada dibawah berarti dia mensubmitnya sebelum aku mensubmit jawabanku. Tapi waktu submissionnya kan sama, apa ada yang salah ?

"Sialan...! Kenapa aku gak pake C++ aja sih" Umpatku begitu melihat waktu yang dibutuhkan untuk memeriksa submission Sasuke. Waktu milikku 0.85 detik dan waktu milik Sasuke hanya 0.02 detik, what the...?

"Kalo gue pake submission ini sih, pastinya akan memory limit exceeded" Kataku begitu melihat berapa memory yang dibutuhkan untuk menjalankan program buatanku tersebut. Program milik Sasuke hanya menggunakan 18 MB memory. Sementara program milikku menggunakan lebih dari seratus MB memory. Batas dari OSN adalah 32 MB memory sehingga bila ada soal ginian pastinya akan langsung ditolak dengan alasan Memory Limit Exceeded.

"Pake algo apa sih tuh anak" Kataku dengan sebal entah pada siapa. Sasuke selalu eksentrik pada algoritma sehingga dia bahkan bisa memikirkan sesuatu dengan spontan saat menggunakan online judge seperti spoj ini.

Kudengar dia sudah mencapai red di topcoder. Jaminan masuk IOI tuh.

Kalo aku yang masih pemula ini sih...! Wah...! Pastinya untung-untungan nih.

Tapi aku tidak akan menyerah begitu saja. Aku harus mengerahkan setiap kemampuanku untuk bisa dengan mulus melewati OSN kali ini dan bisa ikut IOI.

Kali ini kesempatan terakhirku karena sekarang aku sudah kelas dua belas. Tahun depan aku pasti sudah tidak berada disini lagi, alias sudah kuliah di daerah sini juga.

Ku matikan laptopku kedalam mode sleep dan aku langsung berjalan dan merebahkan tubuhku diranjangku.

Aku harus ikut IOI, demi dia.

TBC

Wah…! Alurnya lambat bener ya ? Saya lihat ada yang minta untuk dijelasin nih kata-kata sulitnya. Okelah, saya akan jelasin beberapa kata-kata sulit meskipun saya bukan tipe orang yang bisa menjelaskan dengan sejelas-jelasnya.

Ad-hoc, merupakan sebuah teknik dalam pemrograman komputer yang berarti hanya sebuah logika biasa. Contohnya seperti, menentukan rata-rata yang hanya sebuah logika biasa, jumlahkan semua elemen lalu kemudian bagi dengan jumlah elemen tersebut.

Modullo, adalah sebuah operasi dalam komputer yang menghasilkan sisa suatu pembagian dari bilangan tertentu. Contohnya, 20 mod 6 hasilnya 2. Karena 20 dibagi enam hasilnya tiga dan sisanya dua.

Submission, dalam kontes komputer. Semua jawaban yang dikumpulkan itu adalah submission. Bila benar, maka biasanya disebut AC (accepted). Bila salah, ada berbagai variasi seperti WA (wrong answer) jika jawaban salah, TLE(time limit exceeded) bila waktu penggunaan program melampaui batas waktu yang ditentukan.

Dynamic Programming (DP), adalah seuatu teknik pemrograman yang berupa membagi suatu kasus dengan kasus yang lebih kecil. Contohnya, untuk menghitung barisan fibonacci (1,1,2,3,5,8,13…). Setiap bilangan diperoleh dengan menjumlahkan dua buah bilangan sebelumnya. Bila yang ditanyakan, adalah suku ke-n, maka kita hitung mulai dari 1 sampai n-1 dengan menambahkan elemen didalamnya.

Moga-moga ngerti aja dech dengan enjelasan saya yang acak-adul seperti diatas.

Happy Read