Soal dan Pembahasan OSK Komputer 2014

Perhatikan kumpulan fungsi dari potongan program berikut untuk soal nomor 38 dan 39.

function sapi(kucing: integer): integer;
begin
	if (kucing ≤ 2 ) then
		sapi:= 1
	else
		sapi:= sapi(kucing div 2)+1;
end;

function ayam(rumput: integer): integer;
begin
	if (rumput < 1024) then
		ayam:= ayam(rumput*2) + sapi(rumput)
	else
		ayam:= 0;
end;

function rumput(batu: integer): integer;
var a, c:integer;
begin
	a:=2;
	c:=1;
	while (batu > 0) do
	begin
		if ((batu mod 2) = 1) then
			c:=c*a;
		batu:= batu div 2;
		a:= a*a;
	end;
	rumput:=c;
end;
  1. Berapakah nilai dari ayam(rumput(9))?

      1. 19
      2. 10
      3. 9
      4. 8
      5. 7
  2. Berapakah nilai dari ayam(rumput(2))?

      1. 44
      2. 42
      3. 8
      4. 2
      5. 1

  1. Pertama, selesaikan nilai rumput(9).
    batu = 9
     c = 2, batu = 4, a = 4
    batu = 4
     batu = 2, a = 16
    batu = 2
     batu = 1, a = 256
    batu = 1
     c = 512

    ayam(512) = ayam(1024) + sapi(512)
    ayam(1024) = 0
    Sedangkan sapi(n) adalah \(\log_2(n)\). Sehingga
    sapi(512) = 9 (C).

  2. Selesaikan rumput(2)
    batu = 2
     batu = 1, a = 4
    batu = 1
     c = 4, batu = 0, a = 16.

    Dengan mengambil nilai yang ada di atas, maka
    ayam(4) = ayam(8) + 2
    ayam(8) = ayam(16) + 3
    ayam(16) = ayam(32) + 4
    ayam(32) = ayam(64) + 5
    ayam(64) = ayam(128) + 6
    ayam(128) = ayam(256) + 7
    ayam(256) = ayam(512) + 8
    ayam(512) = ayam(1024) + 9
    ayam(1024) = 0.
    Jadi nilai keluaran yang dihasilkan adalah 44 (A).

Share Now:

5 1 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x

Follow TikTok Kami @cahinfor

Pembahasan soal tahun 2023 sudah tersedia di TikTok Kami loh!