Archive for the Math Category

Euler 71

Posted in Math on May 24, 2009 by dplt

Ini adalah post pertama gw tentang soal math yang topiknya gw dapet dari Project Euler Soal 71. Pada dasarnya gw pengen ini dibaca banyak orang. Mengingat tidak semua orang tertarik membaca hal-hal ini, gw rasa bakal tambah ga minat lagi kalo gw tulis pake Inggris krn bakal tambah pusing bacanya. Oh ya, karena pake Indo, jadinya cuma orang Indo yang bisa baca :p.

Semua bilangan pecahan di sini itu nilainya harus < 1, artinya pembilang lebih kecil dr penyebut (kalo pembilang lebih besar ato sama dengan dari penyebut, hasil pembagiannya kan jadi >= 1).  Misal gw bilang N = 3, berarti semua pecahan yang mungkin kan 1/3 sama 2/3. Kalo N = 4, berarti 1/4, 2/4 dan 3/4. Ok, jadi udah nangkep ya maksudnya nilai pecahan < 1.

Kalau misalnya gw bilang N nya dari 2 sampai 4 gimana? Ya berarti pecahannya ada 1/2, 1/3, 2/3, 1/4, 2/4 sama 3/4 kan. Bingung gak? Kalo bingung, coba baca dari atas gih. Oh ya, 1/2 sama 2/4 kan nilainya sama, kita jadiin satu aja. Jadi jangan ampe ada yang dobel. Terus kita sorting berdasarkan kecil ke besar, maka hasilnya jadi 1/4, 1/3, 1/2, 2/3, 3/4. Masih nangkep dong.

1/4     1/3     1/2     2/3     3/4

Dari deret diatas, misalnya gw tanya: yang persis di sebelah kirinya 1/2 apa? Jawabnya pasti 1/3. Kalau di sebelah kanannya 1/2? Jawabnya 2/3. Ok, simple kan ya. Pokoknya, jangan lupa disort dulu sebelum sebutin mana sebelah kiri atau kanan.

Jadi gini ceritanya. Kalo tadi kan, N nya dari 2 sampe 4. Sekarang, dengan N dari 2 sampai 999,999 (1 juta dikurang 1), lalu, (ini asiknya) disuruh sebutin pecahan apa yang persis di sebelah kirinya 3/7. Hayo, bisa gak cari jawabannya? :D Kalau mau mikir dulu silakan. Tapi kalo udah ga tahan, langsung scroll ke bawah aja.

Mikir ke sana, mikir ke sini. Ternyata ada cara yang sangat gampang buat dapetin jawabannya. 3/7 kan sama dengan 0.428571 = 428571/1000000. Oit, jangan pusing dulu ama itu angka-angka ajaib. Dan bner aja, coba2 dikit,  jawabannya 428570/999999. Begitu sederhana metode untuk penyelesaiannya, tinggal sekali pembagian langsung dapet. Gw pertama dapet jawabannya pake bruteforce segala macem. Ternyata ada cara yang jauh lebih simple. Illfeel gw, haha.

NB: bagi yang baca, awas kalo gak komen. tar bakalan gw tusuk :P

EDIT:

Formula ini hanya berlaku jika penyebut dari pecahan yang menjadi patokan bukan nilai maksimum dan merupakan separuh pertama dari set yang ada.