Saya tidak punya flashdisk. Flashdisk yang 256mb kapasitasnya itu entah. Mungkin tertinggal di rumah sana. Biasanya pakai hardisk, tapi tukang print di pinggir jalan dekat kampus itu sering malas nancepin ke belakang PC. Biasanya, hardisk eksternal butuh power lebih & nggak kuat kalau ditancep di port USB depan. Jadilah pakai memory card dari henpon & modem 3g kalau mau ngeprin.
Asik jadi juga halaman blog ini, dibuat pake jekyll & dipublish lewat github. Desainnya seenak perut, itu logo niatnya gambar Drosophila melanogaster wildtype, tapi ya jadinya gitu lah, geleh. Halaman lain nanti saja dibikin, sekalian mindah postingan dari blog lama ke sini.
Problem ini ternyata bisa diselesaikan pake jurus brutal alias bruteforce. Inti persoalannya, mencari jumlah n C r yang pertama kali nilainya lebih besar dari sejuta untuk 1<=n<=100. Yah kita tau kalau n C r itu maksudnya kombinasi r elemen dari set yang jumlahnya n. Di soalnya juga ada rumus carinya. Karena n antara 1 sampai 100 dan r lebih kecil samadengan 100, jadi cuma ada 10000 kemungkinan kombinasi. Pake python, sedikit itu. Python juga bisa menghitung angka besar tanpa perlu kode aneh-aneh, jadi, ya itu tadi, bisa diselesaikan dengan bruteforce.
Cara saya, bikin dulu list faktorial 1 sampai 100. Pake cara apa itu namanya, dynamic programming mungkin, gak ngertilah. Tinggal dikali-kali saja listnya, jadi. Step berikutnya, iterasi n 1 sampai 100, iterasi r 1 sampai n, hitung n C r. Tiap nilainya lebih dari 1000000, dihitung. Beres.
Ah, kebanyakan bikin laporan, jadi aneh gini nulis blog.
(Tulisan ini adalah repost dari blog saya yang lama)
Pendahuluannya 145, digitnya 1,4,5. Nah 1! + 4! + 5! = 1+24+120 = 145. Rumusan masalahnya, Berapa jumlah semua bilangan yang nilainya sama dengan jumlah faktorial digitnya, seperti 145 itu?
Sebenernya ini apa ya sebutannya? Brute force juga lah. Karena digit itu antara 0 sampai 9, jadi kira-kira maksimum bilangannya kurang dari 9 faktorial, 362880. Pembuktiannya, nggak ngerti saya. Itu sebenernya ngasal aja, hehe, kebetulan bener.
Jadi stepnya dari 362880 sampai 1, dihitung tiap bilangan apakah sama dengan jumlah faktorial digitnya. Tentu, sebelumnya dibikin dulu nilai faktorial dari 0 sampai 9. Sebenernya agak mubazir juga cara ini, karena hanya 2 angka saja, 145 tadi, dan angka sekitar 40ribuan (hitunglah sendiri, biar seru). Angka 1 dan 2 tidak masuk hitungan, karena bukan hasil penjumlahan faktorial digit.
Belakangan saya baru tau, bilangan-bilangan ini disebut Factorion.
(Tulisan ini adalah repost dari blog saya yang lama)
Problem 29 ini, lagi-lagi bisa selesai dengan jurus asal-paksa, tentu saja dengan bantuan ular Python. Pertanyaannya, ada berapa nilai a^b yang berbeda untuk 2<=a<=100 dan 2<=b<=100? Kemungkinan terbesar cuma 99*99 atau 9801 biji, sedikit itu. Tapi ya jumlahnya nggak sebanyak itu, karena misalnya saja 2^4 sama 4^2 kan ya..
Step yang saya kerjakan:
Buat list kosong, list ini untuk menyimpan hasil hitungan a^b.
Hitung a^b untuk a dari 2 sampai 100, masing-masing b dari 2 sampai 100 juga.
Tiap hasil ab tadi, dicek apakah sudah ada di dalam list, kalau belum, masukkan ke dalam list.