Anda di halaman 1dari 17

A - Prime Square Time Limit : 3 seconds Wah, Magus II gagal dalam ujian matematika!

Sebagai guru yang baik, Magus I memberikan tugas pada Magus II untuk memperbaiki nilai. Tugas itu adalah menemukan bilangan- bilangan prima dalam suatu deret bilangan yang mempunyai bilangan kuadrat pada deret yang sama. Bantulah Magus II untuk melakukannya! Format Input: Input diawali suatu bilangan T yang menyatakan jumlah kasus (0<T<=100). Setiap kasus berisi 2 baris, dimana baris pertama berisi suatu bilangan N yang menunjukkan jumlah bilangan (0<N<=1000) dan baris kedua berisi N buah bilangan M(0<M1<M2<M3<<=1000) yang merupakan deret bilangan bulat. Deret tersebut terurut dari kecil ke besar dan masing-masing bilangannya dipisahkan oleh spasi. Format Output: Output terdiri dari satu baris untuk setiap kasus. Outputkan Case #i: (tanpa tanda kutip) dimana i merupakan nomor kasus dimulai dari 1 sampai T diikuti jumlah bilangan prima yang memiliki bilangan kuadrat pada deret tersebut. Contoh Input: 3 5 1 2 3 4 9 10 1 2 3 5 7 11 13 14 15 17 10 2 3 4 5 9 11 13 25 120 122

Contoh Output: Case #1: 2 Case #2: 0

Case #3: 3

B - Listrik Time Limit : 1 second Hari ini Akabil (adik dari Ababil, teman kita yang lucu dan menggemaskan itu) akan belajar mengenai listrik di Sekolah Dasar tempat ia bersekolah. Secara sederhana, ia belajar untuk menghubungkan terminal listrik ke lampu. Apabila terminal dialiri listrik, maka lampu yang terhubung dengan terminal tersebut akan menyala. Satu terminal dapat dihubungkan ke banyak lampu, namun satu lampu hanya bisa dihubungkan ke satu terminal dan listrik tidak bisa dialirkan langsung ke lampu. Selain hubungan antar terminal dan lampu, Akabil juga dapat menghubungkan terminal dengan terminal lainnya. Dengan hubungan ini, maka terminal dapat menyalurkan listrik satu sama lain. Sebagai contoh, apabila terminal A disambungkan ke terminal B, maka listrik yang dialirkan ke terminal A akan mengalir ke terminal B, dan sebaliknya. Karena Akabil adalah siswa yang sangat bersemangat (seperti kakaknya), maka Akabil langsung menghubungkan N buah terminal dan sejumlah lampu yang ada di mejanya (1 <= N <= 10000, jumlah lampu per terminal dan jumlah semua lampu dijamin lebih kecil dari 10^10) menjadi sejumlah rangkaian. Celakanya, setelah Akabil menyelesaikan rangkaiannya, ia baru diketahui bahwa listrik hanya bisa dialirkan ke satu terminal saja. Akabil, yang tentunya ingin menyalakan lampu sebanyak-banyaknya tanpa mengubah rangkaiannya. Oleh sebab itu Akabil meminta bantuan anda untuk mencari terminal manakah yang harus dialiri listrik sehingga jumlah lampu yang menyala maksimum. Format Input: Input akan diawali oleh satu bilangan T (1 <= T <= 5) yang menyatakan jumlah kasus. Setiap kasus berisi dua bilangan N dan P (1 <= P <= 20000) yang masing-masing menyatakan jumlah terminal dan jumlah hubungan antar terminal. Baris berikutnya akan berisi N buah bilangan B, dimana B menyatakan jumlah lampu yang disambungkan ke masing-masing terminal secara berurutan. Setelah itu, P baris berikutnya akan berisi 2 angka Q dan R yang menyatakan terminal Q tersambung ke terminal R. Format Output: Untuk setiap kasus output diawali dengan Case #A: (tanpa tanda kutip), dimana A merupakan nomor kasus, diikuti satu bilangan yang menyatakan nomor terminal yang perlu dialiri listrik pada setiap kasus sehingga jumlah lampu yang menyala maksimum. Apabila ada lebih dari satu kemungkinan, outputkan nomor terminal yang terkecil.

Contoh Input: 1

5 3 1 1 0 3 0 1 2 2 3 4 5

Contoh Output: Case #1: 4

C - Segi Enam Time Limit : 1 second Denny adalah seorang mahasiswa jurusan Teknik Informatika. Suatu hari, ia mendapat tugas mata kuliah Algoritma dan Dasar Pemrograman. Tugas tersebut terdiri dari beberapa soal, dan Denny pun segera mencoba mengerjakannya. Namun, setelah 6 hari, Denny tidak kunjung berhasil menyelesaikan sebuah soal unik, yaitu mencetak segi enam yang terdiri dari sebuah kata yang diinputkan. Sebagai teman yang baik, bantulah Denny membuat programnya karena batas pengumpulan tugas tersebut tinggal 1 hari lagi. Format Input: Input diawali dengan sebuah bilangan T (1 <= T <= 15) yang merupakan jumlah kasus. Setiap kasus berisi sebuah kata yang tersusun atas huruf kapital dan atau angka, dengan panjang 3 sampai 20 karakter. Format Output: Untuk setiap kasus output diawali dengan Case #i: (tanpa petik, dimana i adalah urutan kasus), lalu baris berikutnya tampilkan pola kata sesuai kata yang diinputkan (lihat contoh input dan output untuk lebih jelasnya). Contoh Input : 3 ABC UBAYA ILPC14 Contoh output: Case #1: ABC ABCAB ABC*ABC ABCAB ABC

Case #2: UBAYA UBAYAUB UBAYAUBAY UBAYAUBAYAU UBAYA***UBAYA UBAYAUBAYAU UBAYAUBAY UBAYAUB UBAYA Case #3: ILPC14 ILPC14IL ILPC14ILPC ILPC14ILPC14 ILPC14ILPC14IL ILPC14****ILPC14 ILPC14ILPC14IL ILPC14ILPC14 ILPC14ILPC ILPC14IL ILPC14

D - Penamaan Konstanta Time Limit : 1 second Dalam dunia pemrograman dikenal berbagai macam konvensi atau kesepakatan bersama tentang bagaimana cara menuliskan suatu konstanta. Secara umum, nama konstanta biasanya diawali dengan karakter huruf dan tidak mengandung karakter numerik maupun karakter spesial selain garis bawah. Pada bahasa pemrograman C#, penamaan konstanta direkomendasikan untuk mengikuti aturan Pascal yaitu hanya huruf pertama setiap kata yang ditulis dengan huruf besar dan antar kata tidak dipisahkan oleh karakter apapun. Sementara itu, dalam bahasa pemrograman Java, penamaan konstanta agak berbeda. Konstanta biasanya ditulis dalam huruf besar dan antar kata dipisahkan oleh karakter _ (garisbawah). Davin adalah seorang mahasiswa yang terbiasa dengan bahasa pemrograman C#. Suatu hari ia mendapat project kuliah untuk membuat program dengan bahasa pemrograman Java secara berkelompok. Karena terbiasa dengan C#, ia lupa dengan gaya penamaan konstanta pada Java. Selain itu, karena mengantuk saat mengerjakan, Davin terkadang mengawali nama konstanta dengan karakter _ (garis bawah), baru kemudian diikuti karakter huruf. Tentunya hal ini dapat membingungkan teman-teman sekelompoknya yang terbiasa mengikuti gaya penamaan konstanta pada Java. Oleh sebab itu, bantulah mereka untuk memperbaiki nama konstanta yang telah dibuat Davin.

Format Input: Baris pertama diawali oleh bilangan bulat T (0 < T <= 20) yang menunjukkan banyaknya kasus. Pada setiap kasus terdapat sebuah nama konstanta yang dibuat Davin, dengan panjang karakter L (0 < L <= 100).

Format Output: Untuk setiap kasus output diawali dengan Case #i: (tanpa petik, dimana i adalah urutan kasus), cetak nama konstanta sesuai dengan gaya penamaan konstanta pada bahasa pemrograman Java.

Contoh Input: 3 ApalahArtiSebuahNamaKonstanta

BisaJadiKeWF _DiscountPerItem

Contoh Output: Case #1: APALAH_ARTI_SEBUAH_NAMA_KONSTANTA Case #2: BISA_JADI_KE_W_F Case #3: DISCOUNT_PER_ITEM

E - Petak Umpet Time Limit : 1 second Di suatu daerah pedesaan yang jauh dari Surabaya diadakan lomba petak umpet, di dalam permainan ini 1 orang pemain menjadiseeker dan pemain lainnya adalah hider. Benny, mantan kontestan ILPC, merasa tertantang dan mengikuti lomba tersebut. Ternyata, tempat persembunyiannya tidak seperti petak umpet pada umumnya, dimana pemain bisa bersembunyi di segala tempat. Tempat persembunyiannya berupa sebuah box-box besar yang jumlahnya sesuai dengan peserta hider dimana 1 box hanya dapat menampung seorang hider. Jadi, secara singkat tugas seorang hider adalah menempati sebuah box untuk di tempati dan sang Seekerakan memilih box secara acak. Hider dinyatakan gugur apabila box yang ditempatinya dipilih oleh seeker. Untungnya, Benny mendapat bocoran bahwa sang seeker memilih box berdasarkan sebuah pola. Seeker akan memilih 1 box pertama, kemudian melewati 1 box setelahnya dan memilih box berikutnya (box 3). Setelah itu seeker akan melewati 2 box sesudahnya(box 5) dan seterusnya. Jika sudah melewati semua box maka perhitungan akan diputar kembali ke box pertama. Perhitungan tidak akan dilakukan pada box yang sudah terpilih. Di saat Trial, terdapat 5 kontestan. Karena Benny anak yang pintar berlogika, ia langsung dengan cepat menempati box ke-4. Seekerakan memilih secara berurutan box ke-1, ke-3, ke-2, dan ke-5 sehingga Benny yang memenangkan Trial saat itu. Akan tetapi Lomba sesungguhnya diikuti oleh banyak kontestan sehingga Benny tidak mampu menyusun strategi secara cepat. Bantulah Benny memenangkan lomba! Format Input: Input diawali dengan bilangan T(1<=T<=50) yang merupakan jumlah kasus. Setiap kasus terdiri dari 1 bilangan bulat N (1 N 104) yang menyatakan jumlah peserta. Format Output: Untuk setiap kasus output diawali dengan Case #i: (tanpa petik, dimana i adalah urutan kasus), diikuti dengan sebuah bilangan bulat yang menyatakan nomor kotak yang harus ditempati Benny supaya menang. Contoh Input: 4 5 1 2

20 Contoh Output: Case #1: 4 Case #2: 1 Case #3: 2 Case #4: 13

F - F&F Time Limit : 1 second F&F adalah bilangan matematika baru yang maknanya adalah Faktorial Di Dalam Faktorial. Jika 5 Faktorial (5!) adalah 5x4x3x2x1 = 120, maka 5 F&F (5!!) adalah 5!x4!x3!x2!x1! = 120 x 24 x 6 x 2 x 1 = 34560. Buatlah program untuk menentukan banyaknya jumlah digit 0 yang secara berturutan mengakhiri N!! (nol di tengah tidak termasuk). Misalnya 5!! = 34560, maka jumlah digit 0 yang mengakhirinya adalah 1. Format Input: Input diawali dengan sebuah bilangan T yang menyatakan jumlah kasus(1<=T<=20). Tiap kasus berisi 1 bilangan bulat N (1 N 10000) yang menyatakan bilangan F&F. Format Output: Untuk setiap kasus output diawali dengan Case #i: (tanpa petik, dimana i adalah urutan kasus), diikuti bilangan bulat yang menyatakan jumlah digit 0 berturutan yang mengakhiri N!!. Contoh Input: 3 5 12 16 Contoh Output: Case #1: 1 Case #2: 11 Case #3: 21

G - Menur Time Limit : 2 seconds Ababil masuk RSJ! Ya, kali ini jagoan labil kita dikira mengalami gangguan jiwa setelah mencuri 2 tusuk sate dari tukang sate di depan Ubaya. Akibatnya Ababil harus dibawa ke RSJ Menur oleh petugas Satpol PP Surabaya. Setelah menginap 2 hari, akhirnya Ababil dibebaskan karena ia bisa membuktikan dirinya bahwa ia bukan orang sakit jiwa. Akan tetapi, dia tidak dibebaskan dengan begitu saja. Karena si tukang sate masih marah dengannya, maka dia ingin mengetes Ababil untuk meloloskan diri dari jeruji kamar RSJ Menur sendirian. Semua kamar RSJ Menur dikunci dengan sebuah gembok khusus. Gembok tersebut dibuat dari beberapa tombol yang dinomori dari 1 s.d. N (1<= N <= 16). Berbeda dengan gembok kombinasi biasa, gembok ini hanya bisa dibuka apabila semua tombol gembok telah ditekan. Namun, penekanan pada sebuah tombol dapat menyebabkan beberapa tombol yang lainnya untuk naik kembali. Diberikan jumlah tombol, keadaan tombol-tombol sebelum Ababil mulai mencoba meloloskan diri dan tombol-tombol yang akan berubah apabila sebuah tombol tertentu ditekan, bantulah Ababil untuk mencari jumlah penekanan tersedikit yang dibutuhkannya untuk meloloskan diri dari RSJ! Format Input: Baris pertama berisi sebuah bilangan T (1 <= T <= 20) yang menunjukkan jumlah kasus. Baris pertama dari setiap kasus akan berisi sebuah bilangan N yang menandakan banyak tombol yang ada di gembok. Baris kedua terdiri dari bilangan N1 hingga Nnyang berisi 0 atau 1, dimana 0 menunjukkan bahwa tombol tersebut telah ditekan dan 1 menunjukkan tombol tersebut belum ditekan. N baris berikutnya secara berurutan akan berisi bilangan M yang menandakan jumlah tombol yang akan naik bila tombol Ni ditekan diikuti dengan M bilangan, yaitu tombol-tombol yang akan naik. Format Output: Sebuah string Case #x: Y untuk setiap kasus, dimana x merupakan nomor kasus (dimulai dari 1) dan Y adalah jumlah penekanan minimum untuk membuka gembok. Apabila gembok tidak bisa dibuka dengan cara apapun, outputkan -1. Contoh Input: 1 4

0 0 0 1 2 3 4 1 3 1 4 3 1 2 3 Contoh Output: Case #1: 4

H - Selalu Menang Time Limit : 1 second Ada sebuah permainan yang memiliki sebuah kelemahan, yaitu siapa yang memulai pertama dapat diprediksi akan kalah. Permainan ini dimainkan oleh 2 orang. Cara bermain permainan ini adalah setiap pemain mengambil N buah koin (1<= N <= 9) dari 101 buah koin yang ditumpuk secara bergiliran. Pemain yang mengambil koin terakhir akan kalah. Pada suatu hari, Aloysius dan Setiawan sedang bermain permainan ini dan Setiawan selalu memenangkan permainan ini. Karena jengkel, Aloysius berpikir keras dan berusaha membuat suatu program yang membuat ia bisa mengalahkan Setiawan. Hari demi hari dia habiskan hanya untuk berpikir, bahkan dia bersumpah tidak akan makan sebelum dia berhasil. Akan tetapi, sumpahnya justru menghambat perkembangan programnya. Bantulah Aloysius untuk membuat program tersebut agar dia bisa menang melawan Setiawan. Format Input: Input dimulai dengan bulat M (1<= M <=1000) menyatakan jumlah kasus. Setiap kasus akan berisi sejumlah bilangan N(1<=N<=9) yang menyatakan jumlah koin yang diambil oleh Setiawan pada gilirannya. (Diasumsikan Setiawan selalu mengambil giliran pertama). Format Output: Untuk setiap giliran Setiawan outputkan 2 baris dimana baris pertama berisi Setiawan mengambil N dimana N adalah jumlah koin yang diambil Setiawan dan dibaris kedua outputkan Aloysius mengambil L dimana L (1<=L<=9)adalah jumlah koin yang diambil Aloysius. Setiap kasus diakhiri dengan kalimat Setiawan kalah atau Aloysius kalah. Contoh input: 2 5 6 7 8 6 8 5

8 4 6 1 6 4 4 3 9 1 9 3 4 5 1 Contoh output: Setiawan mengambil 5 Aloysius mengambil 5 Setiawan mengambil 6 Aloysius mengambil 4 Setiawan mengambil 7 Aloysius mengambil 3 Setiawan mengambil 8

Aloysius mengambil 2 Setiawan mengambil 6 Aloysius mengambil 4 Setiawan mengambil 8 Aloysius mengambil 2 Setiawan mengambil 5 Aloysius mengambil 5 Setiawan mengambil 8 Aloysius mengambil 2 Setiawan mengambil 4 Aloysius mengambil 6 Setiawan mengambil 6 Aloysius mengambil 4 Setiawan mengambil 1 Setiawan kalah Setiawan mengambil 6 Aloysius mengambil 4 Setiawan mengambil 4 Aloysius mengambil 6 Setiawan mengambil 4 Aloysius mengambil 6 Setiawan mengambil 3 Aloysius mengambil 7

Setiawan mengambil 9 Aloysius mengambil 1 Setiawan mengambil 1 Aloysius mengambil 9 Setiawan mengambil 9 Aloysius mengambil 1 Setiawan mengambil 3 Aloysius mengambil 7 Setiawan mengambil 4 Aloysius mengambil 6 Setiawan mengambil 5 Aloysius mengambil 5 Setiawan mengambil 1 Setiawan kalah

Anda mungkin juga menyukai