Upload
wahyan
View
241
Download
3
Embed Size (px)
Citation preview
8/6/2019 Olimpiade Sains Komputer
1/2
Contoh Olimpiade Sains Komputer dan Pembahasan
ARlTMATIKAD
ANLOGIKA
1.Sebuah tangki air memiliki enam buah kran air di bagian dasarnya.Jika semua kran dibuka maka tangki yang terisi penuh akan habis
isinya dalam 8 jam. Berapa jamkah yang dibutuhkan untukmenghabiskan isi tangki bila hanya 4 buah kran yang dibuka?
(OSK 2010)A.9
B.10
C.11
D.12
E. 14
Jawaban : D
Pembahasan :
Air dalam tangki akan habis dalamwaktu 8 jam jika dibuka dengan 6
kran, sehingga jika 4 buah kran yangdibuka maka akan menghabiskan
waktu :
6.8 = 4x
48 = 4x
x = 48/4x = 12
2.Robi sekarang 15 tahun lebih tua dari pada adiknya Soni. Pada y
tahun yang lalu umur Robi adalah dua kali dari umur Soni. Jika
Soni sekarang berumur b tahun dan b > y, berapakah nilai b-y?
(OSK 2010)A.13
B.14
C.15
D.16
E. 17
Jawaban : C
Pembahasan :Misalkan umur Robi = r dan dari soal
diketahui umur Soni = b.
Persamaan umur sekarang :
r = 15 + b
Persamaan umur pada y tahun yang
lalu:
r-y = 2 (b-y)
b-y = (r-y) / 2
b-y = (15 + b - y) / 2
2 (b-y) = 15 + b y2b-2y-b+y = 15
b-y = 15
3.Diketabui empat bilangan bulat positif W, X, Y dan Z yang juga
memenuhi W< X < Y < Z. Jika hasil kali W dan Y adalah 32, dan
hasil kali X dan Z adalah 50. Berapakah nilai X dikali Y? (OSK
2010)A. 20
B. 25C. 36D. 40
E. 44
Jawaban : D
Pembahasan :
W.Y = 32
X.Z = 50
W
8/6/2019 Olimpiade Sains Komputer
2/2
5. Suatu array X berindeks dari 1 s.d. 10 dan setiap elemennya berisi
huruf-huruf berurutan dari 'a' sampai 'j'. Suatu algoritma bekerja
pada array tersebut sbb. (prosedur swap(a,b) adalah menukarkan
harga a dan b)
Hasil yang dicetak adalah: (OSK 2010)A. abcdefghij
B. jihgfedcba
C. ebacdhfgij
D. fghijabcde
E. cdefghijab
Jawaban : A
Pembahasan :
Diketahui indeks 1 s.d. 10 merupakan
runtutan dengan nilai a s.d. j. Dari
program yang dituliskan yang perlu
dicermati adalah listing program yang
paling bawah,For i:= 1 to 10 do write(X[i]);
Artinya :
Untuk urutan 1 maka akan menuliskanX[1] = a, urutan 2 maka akan
menuliskan X[2] = b, dst.
Sehingga urutan nilainya :
abcdefghij
6.Perhatikan algoritma berikut ini:
Pemanggilan Bintang(1000) menghasilkan pencetakan "*"
sebanyak? (OSK 2010)
A.2000 baris
B.1994 barisC.1000 baris
D.500 baris
E. 10 baris
Jawaban : E
Pembahasan :Diketahui Bintang(1000),
Dari program diketahui t = integer,
karena 1000 adalah integer, makat > 0
untuk kondisi :
i = 1, menuliskan tanda *, kemudian
1000 dibagi 2 menjadi 500,
i = 2, menuliskan tanda *, kemudian
500 dibagi 2 menjadi 250,
i = 3, menuliskan tanda *, kemudian
250 dibagi 2 menjadi 125,
i = 4, kemudian 125 dibagi 2 menjadi
62, (karena dibulatkan ke bawah)i = 5, kemudian 62 dibagi 2 menjadi
31,
i = 6, kemudian 31 dibagi 2 menjadi15,
i = 7, kemudian 15 dibagi 2 menjadi 7,i = 8, kemudian 7 dibagi 2 menjadi 3,
i = 9, kemudian 3 dibagi 2 menjadi 1,
i = 10, kemudian 1 dibagi 2 menjadi 0.
procedure Bintang(t: integer);
begin
if (t > 0) thenbegin
for i := 1 to t do writeln(*);
Bintang(t div 2); / / t dibagi 2 dan dibulatkan ke bawah
end;
end;
for i:= 1 to 10 doswap(X[i],X[10-i+1]);
for i:= 1 to 10 do write(X[i]);