Pra-OSP DKI Jakarta 2015 - Komputer

1

Pak Dengklek memiliki cat berwarna biru, merah, kuning, hijau, dan hitam, dan sebuah kubus yang akan dicat. Ada dua sisi dengan warna sama, dan empat sisi lainnya dicat dengan warna sisanya. Berapa cara untuk mewarnai kubus tersebut? Dua kubus dengan cat yang sama tapi diputar atau dirotasi akan dihitung sebagai cara yang sama.

2

Diberikan himpunan bilangan dari 1 sampai 49. Kita mengambil n bilangan dari himpunan, dan diletakkan di lingkaran, sedemikian sehingga perkalian 2 bilangan bersebelahan kurang dari 100. Berapakah nilai n terbesar yang mungkin?

Deskripsi untuk soal nomor 3 - 4

Di kota Dengklek, semua orang adalah penjual beras, dan semua orang beli beras dari tetangga-tetangganya. Menariknya, harga dan kualitas semua beras yang dijual selalu sama, permintaan dan penawaran selalu seimbang sehingga semua orang selalu mendapatkan keinginannya. Namun memanggul beras dari rumah ke rumah membutuhkan tenaga, yaitu total berat beras yang dipanggul dari satu rumah ke rumah tetangga tepat di sebelahnya. Dapat diasumsikan rumah penduduk kota Dengklek terletak di satu garis lurus dan jaraknya selalu sama.

3

Misal ada 5 orang penduduk kota Dengklek, dan masing-masing ingin: beli 5 kg, jual 4 kg, beli 1 kg, jual 3 kg, dan beli 1 kg. Berapa tenaga minimal yang dibutuhkan?

4

Misal ada 15 orang penduduk kota Dengklek, dan masing-masing ingin: jual 1 kg, jual 2 kg, jual 3 kg, jual 4 kg, beli 5 kg, jual 6 kg, beli 7 kg, jual 8 kg, beli 9 kg, jual 10 kg, beli 11 kg, jual 12 kg, beli 13 kg, jual 14 kg, beli 15 kg. Berapa tenaga minimal yang dibutuhkan?

5

Ada petak 3x3, dan akan diisi angka 1-9 sedemikian sehingga jika dilihat dari semua kiri ke kanan dan semua atas ke bawah, angkanya akan terurut menaik. Berapa cara kita dapat membuat ini?

6

Jika Pak Dengklek mengendarai mobil dengan kecepatan 40 km/jam, Pak Dengklek tiba 1 jam lebih telat. Namun jika Pak Dengklek mengendarai mobil dengan kecepatan 60 km/jam, Pak Dengklek tiba 1 jam lebih cepat dari seharusnya. Seharusnya, dengan kecepatan berapakah Pak Dengklek mengendarai mobil?

Deskripsi untuk soal nomor 7 - 8

Dari 125 orang, ada 80 orang yang suka matematika, 50 orang suka kimia, 40 orang suka biologi, dan 110 orang suka paling sedikit 1 jenis mata pelajaran. Diketahui juga ada 13 orang yang hanya suka matematika dan kimia, 9 orang yang hanya suka matematika dan biologi, dan 5 orang yang hanya suka biologi dan kimia.

7

Ada berapa orang yang suka matematika tapi tidak suka biologi?

8

Ada berapa orang yang suka biologi atau kimia tapi tidak suka matematika?

9

Gambar di bawah menunjukkan titik-titik yang membentuk persegi berukuran 4x4. Berapa banyak segitiga yang bisa dibentuk apabila setidaknya salah satu titik sudutnya harus berada di pojok (kiri atas, kanan bawah, kiri bawah, kanan bawah) dari titik-titik 4x4?

10

Seekor kumbang berada di titik sudut A di segitiga samasisi ABC. Dalam setiap langkah, kumbang itu memilih satu dari dua sisi yang bersebelahan dengannya, jalan di sana sampai ke titik sudut lain. Berapakah peluang kumbang itu kembali ke titik A setelah 10 langkah?

11

Telah ditemukan satu spesies lebah yang aneh di tahun ke-0, di mana lebah betina akan melahirkan satu lebah jantan dan tetap hidup. Lebah jantan akan melahirkan satu lebah betina dan satu lebah jantan dan kemudian mati. Jika di tahun ke-0 diketahui hanya ada satu lebah betina, berapa banyak lebah yang hidup setelah 10 tahun jika lebah tersebut melahirkan setiap satu tahun?

12

Berapa jumlah semua bilangan asli antara 1 sampai 2015 yang habis dibagi 18 tapi tidak habis dibagi 30?

Deskripsi untuk soal nomor 13 - 14

Gambar diatas menunjukkan peta di Kota Dengklek, pada tahun 1502. Sederhana, dan semua jalannya selalu dua arah.

13

Berapa jarak terpendek dari kota A ke kota H?

14

400 tahun kemudian, Gubernur baru di Kota Dengklek akan membuat jalan tol sedemikian sehingga setiap orang dapat berpergian dari dan ke kota mana saja melalui jalan tol tersebut. Berapa total panjang jalan tol minimal yang dapat dibangun?

15

Dalam pertandingan lari, diketahui ada empat orang – Ana, Dina, Maya, dan Rina. Maya selesai di posisi keempat. Ana bukan paling tua, namun lebih tua daripada Rina. Rina bukan orang yang selesai di posisi kedua. Orang yang kedua termuda selesai di posisi kedua. Orang yang selesai di posisi ketiga lebih tua dibandingkan orang yang selesai di posisi pertama. Dina lebih muda dibandingkan orang yang selesai di posisi ketiga. Siapakah nama orang paling muda?

16

Berapa bilangan terbesar yang bisa dibentuk dari angka-angka 0,1,2,3,4,5,6 tanpa pengulangan sedemikian sehingga bilangan ini habis dibagi 165?

17

Pak Dengklek sedang melakukan riset dengan satu spesies bakteri yang membelah menjadi 2 setiap harinya. Pada tanggal 0 pagi, Pak Dengklek mulai memasukkan 30 bakteri ke kaca patri. Ada tiga hari di antara tanggal 1 dan tanggal 15 di mana Pak Dengklek memasukkan bakteri yang sama di malam hari. Di tanggal 15 malam, Pak Dengklek menemukan 1 juta bakteri di kaca patri. Berapakah jumlah dari semua tanggal di mana hari itu Pak Dengklek menambahkan bakterinya?

18

Ada seekor kucing yang sedang bermimpi dikelilingi oleh 13 ekor tikus, di mana tikusnya dinomori 1 sampai 13. Kucing itu harus menghitung dari 1 sampai 13 kemudian memakan tikus yang terakhir dihitung sebagai tikus ke-13, dan meneruskan ini sampai tinggal tersisa tikus putih. Nomor berapakah yang dimiliki tikus putih (hanya terdapat satu tikus putih)?

19

Pak Dengklek dan Pak Ganesh sedang bermain dengan 35 buah batu. Pak Dengklek selalu mulai pertama. Dalam setiap langkah, pemain boleh mengambil 1, 3, atau 8 buah batu. Pemain yang mengambil terakhir kali (setelah mengambil, batu habis) menjadi pemenang. Semua pemain akan bermain seoptimal mungkin. Siapakah yang menang? (Jawab Dengklek, Ganesh, atau tidak tahu)

20

Pak Dengklek dan Pak Ganesh sedang bermain dengan notasi bilangan heksagonal seperti di bawah. Di bagian kiri adalah notasi Pak Dengklek untuk menghitung pola segienam, sedangkan di bagian kanan adalah notasi Pak Ganesh untuk menghitung pola segienam. Jika notasi di Pak Ganesh menunjukkan angka 1000, maka Pak Dengklek akan merepresentasikannya dengan bilangan (a,b). Berapakah nilai a+b?

21

Perhatikan potongan program berikut ini:

function batagor(i,j,k: integer): longint;
begin
  if (i = j) then batagor := k
  else if (j = k) then batagor := i
  else if (i = k) then batagor := j
  else batagor := i + j + k + batagor(i-2, j+1, k-1);
end;

Berapakah hasil pemanggilan batagor(15,5,10)?

Deskripsi untuk soal nomor 22 - 23

Perhatikan potongan program berikut:

function brokoli(x,y: integer): integer;
begin
    if ((x = 0) and (y = 0)) then brokoli := 0
    else if (x > y) then 
    begin
        if (x > -y) then brokoli := brokoli(x – 1, y) + 1
        else brokoli := brokoli(x, y+1) + 1;
    end 
    else 
    begin
        if (x > -y) then brokoli := brokoli(x, y – 1) + 1
        else brokoli:= brokoli(x + 1, y) + 1;
    end;
end;
22

Jika dilakukan pemanggilan brokoli(9,13), berapakah nilai yang dikembalikan?

23

Jika dilakukan pemanggilan brokoli(-1000,-20) berapakah nilai yang dikembalikan?

24

Perhatikan potongan program berikut ini

var
capcay:array[1..10] of integer = (43,99,1,56,12,89,5,13,76,20);
i,bawang,kol:integer;

begin
  bawang := 1;
  while bawang <= 10 do
  begin
    kol := bawang;
    for i := bawang to 10 do
      if (capcay[i] < capcay[kol]) then kol := i;
    if (bawang <> kol) then
    begin
      capcay[bawang] := capcay[kol] + capcay[bawang];
      capcay[kol] := capcay[bawang] – capcay[kol];
      capcay[bawang] := capcay[bawang] – capcay[kol];
    end;
    inc (bawang);
  end;
  for i := 1 to 10 do write(capcay[i],‘ ’);
end.

Apakah hasil output dari potongan kode diatas?

Deskripsi untuk soal nomor 25 - 26

Perhatikan potongan program berikut:

function bunga(x,y:longint):longint;
begin
    if x = 0 then bunga := y
    else bunga := bunga(x div 10, (y*10) + (x mod 10));
end;

function daun(x:longint):longint;
begin
    daun := bunga(x,0);
end;

function buah(x:longint):longint;
begin
    if daun(x) = x then buah := x else buah := buah(x+1);
end;
25

Berapakah hasil dari daun(2015) + daun(1998) + daun(7500)?

26

Berapakah hasil dari pemanggilan buah(50914)?

27

Perhatikan potongan program berikut ini:

function kopi(x,y:longint):longint;
var susu,karamel:longint;
begin
    susu := 0;
    kopi := 0;
    while (x>0) or (y>0) do 
    begin
        karamel := (x mod 10) + (y mod 10);
        kopi := (kopi*10) + (karamel mod 10);
        susu := karamel div 10;
        x := x div 10;
        y := y div 10;
    end;
end;

Berapakah hasil dari pemanggilan kopi(12345, 67890)?

28

Perhatikan potongan program berikut ini:

x := 0;
for i:=1 to 10 do
    for j:=1 to i do
        x := x+j;

Berapakah nilai x pada akhir dari potongan program diatas?

Deskripsi untuk soal nomor 29 - 30

Perhatikan potongan program berikut:

function jeruk(x:longint):string;
var y:longint;
begin
    y := 1 shl 30;
    jeruk := ‘’;
    while (y>0) do
    begin
         if x >= y then
         begin
             jeruk := jeruk + ‘a’;
             x := x-y;
         end else if length(jeruk) > 0 then jeruk := jeruk + ‘b’;
         y := y shr 1;
    end;
end;
29

Apakah hasil dari pemanggilan jeruk(13)?

30

Berapakah nilai x agar hasil dari pemanggilan jeruk(x) adalah “abbaaba”?

Deskripsi untuk soal nomor 31 - 32

Perhatikan potongan program berikut:

function tempe(x,y,z:longint):longint;
var i:longint;
begin
    tempe := 1;
    for i:=1 to y do tempe := (tempe*x) mod z;
end;
31

Perhatikan potongan program berikut ini:

function apel(x:longint):longint;
begin
    if x<5 then apel:=x else apel := apel(x div 5) + apel(x mod 5);
end;

Berapakah hasil dari pemanggilan apel(7550)?

32

Berapakah hasil dari pemanggilan tempe(3, 5, 4)?

33

Berapakah hasil dari pemanggilan tempe(7, 150, 5)?

34

Perhatikan potongan program berikut ini:

function tahu(x,y:longint):longint;
begin
    if (x<1) or (y<1) then tahu := 0 
    else if (x=1) or (y=1) then tahu :=1 
    else tahu := tahu(x-2, y-1) + 2*tahu(x-1,y-2) + 1;
end;

Berapakah hasil dari pemanggilan tahu(4,5)?

Deskripsi untuk soal nomor 35 - 36

Perhatikan potongan program berikut:

function piring(x:longint):longint;
begin
    piring := 1;
    while x mod 2 = 0 do
    begin
         piring := piring * 2;
         x := x div 2;
    end;
end;

function gelas(x,y:longint):longint;
begin
    gelas := 0;
    if x<=y then gelas := piring(x) + gelas(x+1,y);
end;
35

Berapakah hasil dari pemanggilan piring(28)?

36

Berapakah hasil dari pemanggilan gelas(15, 45)?

Deskripsi untuk soal nomor 37 - 40

Perhatikan potongan program berikut ini:

function makaroni(x:longint):longint;
begin
    if x = 0 then makaroni := 1 else makaroni := x * makaroni(x-1);
end;

function pizza(x:longint):longint;
var i:longint;
begin
    pizza := 0;
    for i:=1 to x do
        if x mod i = 0 then pizza := pizza + 1;
end;

function pasta(x,y:longint):longint;
var i:longint;
begin
    pasta := 0;
    for i:=x to y do
        if i mod 2 = 0 then pasta := pasta + 1;
end;
37

Berapakah hasil dari pemanggilan makaroni(4)?

38

Berapakah hasil dari pemanggilan pizza(75)?

39

Berapakah hasil dari pemanggilan pizza(makaroni(10))?

40

Berapakah hasil dari pemanggilan pasta(100, 1000)?

Deskripsi untuk soal nomor 41 - 42

Perhatikan potongan program berikut:

var
  a,b,c,i,j,idx : longint;
  ar : array [1..10] of char = ('c','d','x','s','t','t','a','b','j','r');
  br,cr : array [1..30] of longint;

begin
  a := 1;
  b := 7;
  c := 10;
  for i := a to b do begin
    idx := ord(ar[i]) - ord('a') + 1;
    br[idx] := br[idx] + 1;
  end;
  for i := b+1 to c do begin
    idx := ord(ar[i]) - ord('a') + 1;
    cr[idx] := cr[idx] + 1;
  end;

  for i := 1 to 26 do
    for j := 1 to br[i] do
      write(chr(i+96));

  for i := 1 to 26 do
    for j := 1 to cr[i] do
      write(chr(i+96));
  writeln();
end.

Catatan:

  • ord(x) : fungsi mengembalikan nilai ASCII karakter x. ASCII ‘a’, ‘b’, ‘c’, …, ‘z’ berturut-turut adalah 97 – 122.

  • chr(x) : fungsi mengembalikan karakter alfabet dengan nilai ASCII x. Contoh: chr(98) adalah ‘b’.
41

Apakah output dari program diatas?

42

Berapakah nilai a, b, dan c masing-masing agar output yang dihasilkan adalah "xastt"?

Deskripsi untuk soal nomor 43 - 45

Perhatikan potongan program berikut ini:


var cnt,x : longint;

procedure tukar(a:longint);
begin
  cnt := 1;
  while (a > 0) do begin
    cnt := cnt * 2;
    a := a div 2;
  end;
end;

begin
  readln(x);
  tukar(x);
  writeln(cnt);
end.
43

Apakah output program jika x = 100?

44

Berapakah kompleksitas program? Nyatakan dalam x.

45

Berapa nilai x maksimal agar output program adalah 1024?

46

Perhatikan potongan program berikut ini:

var a,n : longint;

begin
  a := 0;
  readln(n);
  for i := 1 to 100 do a := a + n – i;
  writeln(a);
end.

Jika n = 27, berapakah nilai a pada akhir program?

Deskripsi untuk soal nomor 47 - 48

Perhatikan potongan program berikut ini:

var
  i,j : longint;
  s : string;
  ar : array [1..15] of char = ('p','r','a','o','s','p','j','a','k','a','r','t','a','I','T');

begin
  i := 0;
  repeat
    inc(i);
    for j := 1 to i do
      s := s + ar[j];
  until (i > 7);
  writeln(s);
end.
47

Apakah output dari program diatas?

48

Berapa banyak karakter yang akan tercetak jika pernyataan until (i > 7); diganti dengan until (i > 10);?

Deskripsi untuk soal nomor 49 - 50

Perhatikan potongan program berikut:

if (a mod 3 = 0) then begin
  if (b > c) then c := b + (c * 3) div 2
  else b := c + (b * 3) div 2;
end else begin
  if (b > c) then b := (a div 2) + c
  else c := (a div 2) + b;
end;
d := a + b + c;
49

Berapa nilai d jika a = 7, b = 8, c = 2?

50

Jika nilai a,b, dan c masing-masing adalah salah satu bilangan bulat positif kurang dari 10, berapa nilai terbesar d?