PROBLEM A Deskripsi Pada suatu hari ada 5 orang dan 1 monyet sedang berkemah di tengah hutan. Lalu kelima orang itu mengumpulkan batang kayu dan disimpan di perkemahan mereka. Pada malam hari ada 1 orang yang membagi batang-batang kayu yang telah dikumpulkan tersebut sebanyak 5 bagian sama banyak dan ternyata ada tersisa satu batang kayu yang akhirnya diberikan kepada monyet mereka, dan orang itu mengambil 1/5 dari batang-batang kayu tersebut. Keesokan harinya orang kedua melakukan hal yang sama, membagi batang-batang kayu yang ada kedalam 5 bagian sama banyak dan ternyata tersisa satu batang yang akhirnya diberikan kepada monyet mereka dan orang ini mengambil 1/5 dari batang-batang ini. Orang ke 3, 4, dan 5 pun melakukan hal yang sama dan selalu tersisa satu batang yang diberikan kepada monyet mereka. Mereka melakukan hal ini di malam yang berbeda, tidak bersamaan. Lalu setelah semua orang melakukan “korupsi” ini, sisa batang yang ada ternyata habis dibagi 5 sehingga apabila dibagi rata sebanyak 5 bagian, monyet mereka tidak akan mendapatkan apa-apa lagi. Jika biasanya anda diminta untuk menentukan jumlah batang kayu pada awalnya, saat ini anda diberi jumlah batang kayu pada awalnya dan anda diminta untuk menentukan ada berapa orang yang ikut dalam perkemahan itu. Monyet yang dibawa dalam perkemahan selalu sebanyak 1 monyet. Format Input Satu bilangan bulat n (2 <= n <= 30000) setiap barisnya yang menyatakan jumlah batang kayu yang dikumpulkan orang-orang yang mengikuti perkemahan. Input diakhiri dengan n = 0 Format Output Untuk setiap n keluarkan satu baris yang berisi sebuah bilangan bulat x yang merupakan jumlah orang yang mengikuti perkemahan ini dengan format “x orang dan 1 monyet.” tanpa tanda kutip. Apabila tidak ada jawaban yang mungkin, keluarkan kalimat “tidak ada jawaban.” tanpa tanda kutip. Sample Input 3121 35 12 0 Sample Output 5 orang dan 1 monyet. 2 orang dan 1 monyet. tidak ada jawaban. PROBLEM B Deskripsi Anda diberikan sebuah deretan bilangan lalu anda diminta untuk mengurutkan bilangan-bilangan tersebut. Tetapi untuk mengurutkan sebuah deretan bilangan terdapat biaya dan anda diminta untuk mengurutkan deretan bilangan tersebut dengan biaya yang seminimal mungkin. Biaya untuk mengurutkan bilangan adalah jumlah dari biaya yang diperlukan untuk menukar dua buah bilangan yaitu jumlah dari dua bilangan yang ditukar. Sebagai contoh deretan bilangan yang diberikan adalah 8 1 2 4 , maka apabila anda melakukan proses seperti ini : 8 1 2 4 -> tukar 8 dan 1 dengan biaya 8 + 1 = 9 1 8 2 4 -> tukar 8 dan 2 dengan biaya 8 + 2 = 10 1 2 8 4 -> tukar 8 dan 4 dengan biaya 8 + 4 = 12 1 2 4 8 -> sudah terurut, total biaya = 9 + 10 + 12 = 31. Proses ini bukanlah proses pengurutan yang paling optimal. Perhatikan proses berikut ini : 8 1 2 4 -> tukar 1 dan 2 dengan biaya 1 + 2 = 3 8 2 1 4 -> tukar 1 dan 4 dengan biaya 1 + 4 = 5 8 2 4 1 -> tukar 8 dan 1 dengan biaya 8 + 1 = 9 1 2 4 8 -> sudah terurut, total biaya = 3 + 5 + 9 = 17. Proses ini adalah proses yang paling optimal. Buatlah sebuah program yang dapat menghitung biaya untuk proses pengurutan yang paling optimal. Format Input Sebuah bilangan n (1 <= n <= 1000) yang menyatakan jumlah bilangan yang akan diurutkan. Diikuti n buah bilangan yang dijamin muat dalam tipe data integer 32 bit. Format Output Satu bilangan x yang merupakan biaya minimum yang diperlukan untuk mengurutkan bilangan. Sample Input 48124 Sample Output 17 PROBLEM C Deskripsi Pak Casli ingin menulis sebuah bukudan setiap halaman pada buku dia akan selalu dinomori dengan bilangan romawi. Lalu dia penasaran, berapa jumlah setiap karakter bilangan romawi yang akan dia gunakan dalam buku buatannya. Bilangan romawi terdiri dari symbol “I” , “V” , “X” , “L” , “C” yang masing-masing bernilai 1 , 5 , 10 , 50 , 100. Sebagai contoh bilangan romawi untuk 24, 39, 44, 49, dan 94 adalah “XXIV” , “XXXIX” , “XLIV” , “XLIX” , dan “XCIV”. Buatlah sebuah program yang dapat menghitung jumlah kemunculan setiap karakter bilangan romawi dalam buku yang dia buat. Format Input Input terdiri dari beberapa baris yang setiap baris terdiri dari satu buah bilangan bulat n (1 <= n <= 100) yang merupakan jumlah halaman dalam buku buatan Pak Casli. Input diakhiri dengan n = 0. Format Output Untuk setiap n keluarkan rincian jumlah kemunculan setiap karakter bilangan romawi dalam buku Pak Casli. Perhatikan sample output untuk format output yang seharusnya. Sample Input 1 2 20 99 0 Sample Output 1: 1 I, 0 V, 0 X, 0 L, 0 C 2: 3 I, 0 V, 0 X, 0 L, 0 C 20: 28 I, 10 V, 14 X, 0 L, 0 C 99: 140 I, 50 V, 150 X, 50 L, 10 C PROBLEM D Deskripsi Pak Casli ingin mengalikan dua buah bilangan. Lalu ia penasaran berapa jumlah kemunculan setiap bilangan dalam hasil perkalian ini. Sebagai contoh 1234 dan 5678 jika dikalikan maka hasilnya adalah 7006652. Dalam bilangan tersebut angka 7 muncul 1 kali, angka 0 muncul 2 kali, angka 6 muncul 2 kali, angka 5 muncul 1 kali dan angka 2 muncul 1 kali. Karena bilangan yang dikalikan bisa sepanjang 100 digit, maka tidak mungkin Pak Casli menghitung sendiri. Maka ia pun meminta bantuan anda untuk membuat program yang dapat membantunya. Format Input Dua buah bilangan bulat non-negative a dan b yang maksimal sepanjang 100 digit dipisahkan spasi. Format Output (perhatikan sample output) Sample Input 1234 5678 Sample Output 2 (0) , 0 (1) , 1 (2) , 0 (3) , 0 (4) 1 (5) , 2 (6) , 1 (7) , 0 (8) , 0 (9) PROBLEM E Deskripsi Pak Casli memiliki sebuah kartu yang berisi sebuah bilangan. Lalu Pak Casli ingin memotong-motong bilangan tersebut sedemikian rupa sehingga potongan-potongan bilangan tersebut apabila dijumlahkan akan mendekati sebuah bilangan target tetapi tidak melewatinya. Sebagai contoh kartu Pak Casli berisi bilangan 39114 dan bilangan target yaitu 100, maka Pak Casli dapat memotong kartu tersebut menjadi 4 kartu yang berisi bilangan 3 , 91 , 1, dan 4 , sehingga jumlah semuanya adalah 3+91+1+4=99. Apabila kartu tersebut dipotong menjadi 3 kartu yang berisi bilangan 3 , 91 , dan 14 , maka jumlahnya adalah 3+91+14=108 yang lebih besar daripada sebelumnya tetapi melewati target sehingga tidak valid. Buatlah program yang dapat menghitung jumlah dari potongan kartu-kartu yang paling mendekati target tetapi tidak melewatinya. Format Input Input terdiri dari beberapa baris. Setiap baris terdiri dari sebuah bilangan bulat positif n dan m yang merupakan bilangan dalam kartu Pak Casli dan bilangan target. n dan m dijamin muat untuk tipe data integer 32 bit. Input diakhiri dengan End Of File. Format Output Untuk setiap n keluarkan sebuah bilangan bulat yang merupakan jumlah bilangan dari potonganpotongan kartu yang paling mendekati m. Sample Input 39114 100 39114 1000 39114 100000 Sample Output 99 9118 39114