Contoh Soal & Pembahasan

Engrizaoktaviannugraha

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: yang dihasilkan adalah *** (OSP 2007) 29. Perhatikan algoritma berikut: Procedure geser(i: integer); begin i := (((i shl 4) shr 6) shl 2); Tim Olimpiade Komputer Indonesia halaman 25 Contoh Soal Olimpiade Sains Nasional Bidang Komputer dan Pembahasan writeln(i); end; Apakah output dari pemanggilan geser(9) di atas? (A) 1 (B) 0 (C) 2 (D) 4 (E) 8 i = 910 = 10012 i shl 4 = 100100002 = 102 (i shl 4)shr 6 ((i shl 4)shr 6)shl 2 = 10002 = 810 (OSP 2007) 30. Perhatikan algoritma berikut: function ABC (a, b : integer) : integer; var hasil : integer; begin if (a mod b = 0) then ABC := b else ABC := ABC(a, b-1); end; Berapakah hasil ABC(12, 4)? (A) ‐1 (B) 0 (C) 1 (D) 2 (E) 4 Fungsi ABC mengembalikan nilai b jika a merupakan kelipatan b (a mod b = 0). Jika b bukan faktor dari a, maka fungsi ini akan memanggil dirinya kembali dengan parameter ABC(a,b‐1). Tampak bahwa fungsi ABC akan mengembaikan nilai faktor terbesar dari a yang kurang dari atau sama dengan Tim Olimpiade Komputer Indonesia halaman 26 Contoh Soal Olimpiade Sains Nasional Bidang Komputer dan Pembahasan b. Maka hasil ABC(12,4) adalah 4. (OSP 2008) Catatan: Jawaban dan pembahasan soal non‐pemrograman ini disusun oleh para kontributor TOKI1 dan bukan merupakan jawaban/pembahasan resmi. Kontributor: Bernardino Dito; Brian Marshal; Prima Chairunnanda, B. Eng.; Riza Oktavian Nugraha Suminto; Roberto Eliantono Adiseputra; Suhendry Effendy, S. Kom. 1 Tim Olimpiade Komputer Indonesia halaman 27 Contoh Soal Olimpiade Sains Nasional Bidang Komputer dan Pembahasan C. Soal Pemrograman Faktorial Kode Soal: Batas Run-time: Batas Memori: Masukan: Keluaran: OSN601 1 detik / test-case 32 MB Standard input Standard output Diberikan sebuah bilangan N, N! disebut N faktorial dan nilainya dihitung dengan rumus : N x (N ‐ 1) x (N ‐ 2) ... x 1. Tugas Anda adalah menghitung berapa jumlah angka nol berturutan yang mengakhiri N!. Sebagai contoh: • N = 10: 10! = 3 628 800, maka jumlah angka nol adalah 2. • N = 8: 8! = 40 320, jumlah angka nol adalah 1 (nol di tengah tidak dihitung). FORMAT MASUKAN Masukan hanya terdiri dari satu baris berisi bilangan bulat N (1 ≤ N ≤ 10 000). FORMAT KELUARAN Tuliskan satu bilangan bulat yang menyatakan jumlah angka nol yang mengakhiri N!. CONTOH MASUKAN 1 10 CONTOH KELUARAN 1 2 CONTOH MASUKAN 2 8 CONTOH KELUARAN 2 1 Tim Olimpiade Komputer Indonesia halaman 28 Contoh Soal Olimpiade Sains Nasional Bidang Komputer dan Pembahasan CATATAN Hati‐hati dengan integer overflow: tipe data longint atau long hanya dapat menampung bilangan hingga sekitar 2 milyar. PETUNJUK Jika anda dapat memanfaatkan sifat rumus faktorial, maka anda akan mendapatkan hasil yang lebih efisien PEMBAHASAN2 Pertanyaan: Berapa banyak deretan angka nol di belakang bilangan faktorial N! ? Jika Anda menjawabnya dengan memperkalikan semua bilangan N.(N‐1).(N‐2)....2.1 dst maka anda hanya berhasil menjawab untuk N yang kecil (sebatas ukuran harga terbesar dari bilangan bulat yang disediakan serta batas waktu komputasi yang diberikan). Jadi Anda perlu melakukan analisis sebagai berikut: Karena banyaknya angka nol di belakang suatu angka bergantung pada berapa banyak kemunculan faktor 2 dan faktor 5 (mengapa? karena 2 kali 5 adalah 10). Dan khususnya, untuk suatu bilangan N! dapat dibuktikan banyaknya kemunculan faktor 5 tidak akan lebih banyak dari banyaknya kemunculan faktor 2. Maka, pertanyaan di atas dapat dijawab dengan hanya menghitung total banyaknya kemunculan faktor 5 dari bilangan‐bila...
View Full Document

This document was uploaded on 03/11/2014 for the course TECHNIC 1 at Padang State University.

Ask a homework question - tutors are online