Archive

Archive for the ‘Contoh soal Olimpiade Komputer’ Category

Soal Olimpiade Komputer Function 1

April 11, 2010 3 komentar

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)?

Pembahasan

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 b. Maka hasil ABC(12,4) adalah 4.

Untuk lebih memahami silahkan download disini

Soal Olimpiade Komputer Procedure 2

April 11, 2010 1 komentar

Perhatikan algoritma berikut:

Procedure geser(i: integer);
begin
i := (((i shl 4) shr 6) shl 2);
writeln(i);
end;
Apakah output dari pemanggilan geser(9) di atas?

Pembahasan

i = 910 = 10012
i shl 4 = 100100002
(i shl 4)shr 6 = 102
((i shl 4)shr 6)shl 2 = 10002 = 810

Jadi output program diatas adalah 8

Untuk lebih mengerti silahkan download disini

Contoh Soal Olimpiade Komputer Pascal

April 11, 2010 11 komentar

Diberikan penggalan program berikut :

procedure jalan(n: integer);
begin
if n > 0 then begin
jalan(n div 5);
write(n mod 5 + 1);
end;
end;

Pada pemanggilan jalan(49) pada procedure di atas ini apa yang akan dicetaknya kemudian?

Pembahasan

perhatian dengan baik program tersebut, jika nilai n tersebut lebih besar dari nol maka statmen dibawahnya akan di jalankan. karena terdapat begin … end  di bawahnya jadi 2 statmen di antara begin .. end akan di jalankan.

begin
jalan(n div 5);
write(n mod 5 + 1);
end;

jalan(49) :
– jalan(9)
‐ jalan(1)
‐ jalan(0)
‐ write(2)
‐ write(5)
– write(5)

Jadi, yang akan tercetak adalah 255

untuk lebih memahami silahkan download disini

Penentuan Bilangan Awal Pangkat Banyak

untuk mampu dalam memecahakan masalah untuk soal mengetahui digit awal atau akhir, tentunya kita harus terbiasa dengan sifat-sifat bilangan pangkat!

berikut beberapa sifat pangkat :

a p x a q = a p+q

(a x b)p = a p x b p

a p : a q = a p-q

a 0 = 1

(a p) q = a pxq

a –p = 1 / a p

Contoh soal sebagai berikut

Jumlah dua digit pertama dari bilangan hasil perkalian

5 30003 x 8 10004 Adalah…

Pembahasan

Untuk memecahkan soal seperti diatas mencari digit pertama, kita harus sederhanakan bentuk pangkat tersebut agar menjadi bilangan tertentu di kaliakan 10 pangkat banyak.

lebih jelasnya mari kita sederhanakan :

5 30003 x 8 10004 =  5 30003 x (23) 10004

= 5 30003 x 23×10004

= 5 30003 x 230012

= 5 30003 x 230003 +9

= 5 30003 x 230003 x 29

= (5 x 2)30003 x 29

= 1030003 x 29

= 29 x 1030003

= 512 x 1030003

perlu di ingat berapapun 10 dipangkatkan dari 1 sampai n hasilnya nol ke n dibelakangnya

ex :

103 = 1000

jadi jumlah dua digit pertama adalah 5 + 1 = 6.

bisa di download disini

Jumlah dua digit pertama dari bilangan hasil perkalian 5 30003 x 8 10004 Adalah…

Contoh Soal Olimpiade Komputer materi WHILE DO

April 9, 2008 30 komentar

potongan prgram dibawah untuk soal 1 -2

c := 0
d := 0
while (a>b) do
begin
a := a – b;
c := c + 1;
d := d + b;
end;
write(c,’,’,d);

1. jika nilai  a = 15, b = 4 maka keluaran dari program diatas adalah..
a. 3 , 12
b. 1 , 4
c. 0 , 0
d. 6 , 23
e. 2 , 8

Pembahasan
nilai awal a = 15, b = 4, c = 0, d = 0
kondisi a > b
—–>> 15 > 4 (True), maka
a = 15 – 4
= 11
c = 0 + 1
= 1
d = 0 + 4
= 4
—–>> 11 > 4 (True), maka
a = 11 – 4
= 7
c = 1 + 1
= 2
d = 4 + 4
= 8
—–>> 7 > 4 (True), maka
a = 7 – 4
= 3
c = 2 + 1
= 3
d = 8 + 4
= 12
—–>> 3 > 4 (False), maka perulangan dihentikan.
Jadi nilai c = 3, d = 12
2. jika nilai  a = 34, b = 11 maka keluaran dari program diatas adalah..
a. 3 , 12
b. 1 , 4
c. 0 , 0
d. 6 , 23
e. 2 , 8

Pembahasan
nilai awal a = 34, b = 11, c = 0, d = 0
kondisi a > b
—–>> 34 > 11 (True), maka
a = 34 – 11
= 23
c = 0 + 1
= 1
d = 0 + 11
= 11
—–>> 23 > 11 (True), maka
a = 23 – 11
= 12
c = 1 + 1
= 2
d = 11 + 11
= 22
—–>> 12 > 11 (True), maka
a = 12 – 11
= 1
c = 2 + 1
= 3
d = 22 + 11
= 33
—–>> 1 > 11 (False), maka perulangan dihentikan.
Jadi nilai c = 3, d = 33

klik disini untuk download

Contoh soal dan pembahasan Olimpiade Komputer materi for to do

April 7, 2008 52 komentar

untuk soal 1 -2
y := 10;
x := 0;
for i := 0 to y-1 do
begin
x:=x+ 2 * i;
end;
Writeln (x);

1. Berapakah output dari program diatas?
a. 112
b. 110
c. 90
d. 72
e. 45

Pembahasan
Program diatas akan mengulang pernyataan x:=x +2*i sebanyak 10 kali dari i = 0 sampai 9.
0 = 0 + 2*0
2 = 0 + 2*1
6 = 2 + 2*2
12 = 6 + 2*3
20 = 12 + 2*4
30 = 20 + 2*5
42 = 30 + 2*6
56 = 42 + 2*7
72 = 56 + 2*8
90 = 76 + 2*9
jadi nilai x yang akan dimunculkan adalah 90.
2. jika baris kelima (x:=x+2*i) diganti dengan x:= x + i
Berapakah output program tersebut?
a. 112
b. 110
c. 90
d. 72
e. 45

Pembahasan
0 = 0 + 0
1 = 0 + 1
3 = 1 + 2
6 = 3 + 3
10 = 6 + 4
15 = 10 + 5
21 = 15 + 6
28 = 21 + 7
36 = 28 + 8
45 = 36 + 9
jadi output nya adalah 45.
untuk soal no 3
program x;
var
i,j,k,l : integer;
begin
for i:= 1 to 2 do
for j := 1 to 2 do
write (i*j);
end.

3. output program diatas adalah?
a. 4
b. 6
c. 9
d. 123246369
e. 1
2
3
2
4
6
3
6
9

Pembahasana
i  *  j
1) —>  1 * 1 = 1
2 * 1 = 2
3 * 1 = 3
2) —>  1 * 2 = 2
2 * 2 = 4
3 * 2 = 6
3) —>  1 * 3 = 3
2 * 3 = 6
3 * 3 = 9
karena write jadi hasil yang akan dimunculkan berjejeer ke samping 123246369. Trims

monggo kilik disini untuk download

Contoh soal dan pembahasan Olimpiade Komputer materi FUNGSI dalam Turbo Pascal

April 4, 2008 39 komentar

Untuk soal 1 – 2
FUNCTION fak (x, y: integer) : Integer;
BEGIN
   if y:= 0 then fak := 1
   else
      fak := x * fak (x, y-1);
END;
Writeln (fak(5, 3));
 
1. Apa hasil dari program di atas!
   a. 125
   b. 8
   c. 81
   d. 3
   e. 15

Pembahasan :
Ini adalah contoh kasus fungsi dengan mempergunakan rekursi (fungsi yang mampu memangil dirinya sendiri)
Nilai x awal adalah 5, nilai  y awal adalah 3 maka
fak (5,3) —> 5 * fak (5, 3-1) = 5 * 25 = 125
fak (5,2) —> 5 * fak (5, 2-1) = 5 * 5 = 25
fak (5,1) —> 5 * fak (5,1-1) = 5 * 1 = 5
fak (5,0) (proses selesai karena y =0)
Jadi yang muncul adalah
125

2. Jika writeln (fak(5,3)) diganti menjadi writeln (fak(4,5)), hasil dimunculkan adalah…
    a. 20
    b. 9
    c. 1024
    d. 64
    e. 5

Pembahasan:
Kasus ini sama seperti pada soal 1
Nilai x awal adalah 4, nilai  y awal adalah 5 maka
fak (4,5) —> 4 * fak (4, 5-1) dengan mempergunakan hasil fak ( 4,4) –>  4 * 256 = 1024
fak (4,4) —> 4 * fak (4, 4-1) dengan mempergunakan hasil fak ( 4,3) –>  4 * 64 = 256
fak (4,3) —> 4 * fak (4,3-1) dengan mempergunakan hasil fak ( 4,2) –>  4 * 16 = 64
fak (4,2) —> 4 * fak (4,2-1) dengan mempergunakan hasil fak ( 4,1) –>  4 * 4  = 16
fak (4,1) —> 4 * fak (4,1-1) = 4 * 1 = 4
fak (4,0) (proses selesai karena y =0)
Jadi yang muncul adalah
1024

3. Manakah yang salah dari deklarasi dibawah ini
  a. function info(a:byte):real;
  b. function info:byte;
  c. function info(a,b:byte) : real;
  d. function info(a: real; b:integer):real;
  e. function info(a:real);

Pembahasan
Ingat bentuk dekelarasi dari suatu fungsi
FUNCTION nama_fungsi(daftar_fungsi):tipe;
– daftar parameter berisi sejumlah parameter
– tipe menyatakan tipe dari hasil fungsi
– Jika fungsi tidak memiliki parameter, tanda () tidak perlu disertakan.
jadi jawabannya adalah e.function info(a:real);