Anda di halaman 1dari 15

PEMBAHASAN OLIMPIADE SAINS 2013 TINGKAT KABUPATEN/KOTA BIDANG INFORMATIKA/KOMPUTER

Bagian A: Aritmetika dan Logika (30 Soal)

1.Lampuyangtidakterhubungdengansakelaradalahlampu­lampuyangbernomorbukan

merupakankelipatan2,3,5,7,maupun11.Nomor­nomoryangmemenuhiadalah1,dan

yangmemilikifaktorprimadiatas11,yakniada6buah:

● 1 =(tidakmemilikifaktorprima)

● 13=13

● 17=17

● 19=19

● 23=23

● 29=29

Jawaban:D

2.BanyaknyalampuyangmenyalaakanmaksimumapabilaSugengmenekansakelarB,C,

D,danE.Setelahsakelar­sakelartersebutditekan,akanterdapat16lampuyangmenyala.

Halinidiperolehdengancaracoba­coba.Sebagaicontoh,akanmenguntungkanapabila

SugengmenekansakelarC,D,danEkarenatidakadalampuyangbentrok,danseterusnya.

Jawaban:D

3.Dengancarabacktracking,yaknimencoba­cobasemuacarayangmungkin,ditemukan11

cara,yaknisebagaiberikut.Hurufyangsamaterdapatpadadominoyangsama.

aabb

aabb

aabb

aabb

aabb

aabc

ccdd

ccde

cdde

cdee

cdef

ddbc

eeff

ffde

cffe

cdff

cdef

eeff

aabc

abbc

abcc

abcc

abcd

debc

addc

abdd

abde

abcd

deff

eeff

eeff

ffde

eeff

Jawaban:B

4.Marikitanomoriobjek­objektersebutdarikirikekanan.K=katak,B=batu,D=daun,S=

seberangsungai. 0 1 2 3 4 5 6 7 8 9 10 11 12 K
seberangsungai.
0
1
2
3
4
5
6
7
8
9
10
11
12
K
B
B
D
B
B
B
B
D
B
D
B
S

Misalkanf(x)=banyaknyacarauntukmencapaiseberangsungaidaripetaknomorx.Mari

TimOlimpiadeKomputerIndonesia(TOKI)

1

kitahitungnilaif(x)darixbesarkekecil.Tentusajakitatidakperlumenghitungf()untukpetak

yangberisidaun.

● f(12)=1

● f(11)=f(12)=1

● f(9)=f(11)=1

● f(7)=f(9)=1

● f(6)=f(7)=1

● f(5)=f(6)+f(7)=1+1=2 (lompatkepetak6atau7)

● f(4)=f(5)+f(6)=2+1=3

(lompatkepetak5atau6)

● f(2)=f(4)=3

● f(1)=f(2)=3

● f(0)=f(1)+f(2)=3 +3=6

(lompatkepetak1atau2)

(diamditempat)

(lompatkepetak12)

(lompatkepetak11)

(lompatkepetak9)

(lompatkepetak7)

(lompatkepetak4)

(lompatkepetak2)

Jawabanyangdiinginkanadalahf(0)=6.

Jawaban:D

5.Terdapatbeberapakasus:

● Cibimendapat7permen.Sisapermen=5,caramembagikankeAbidanBibi=6.

● Cibimendapat8permen.Sisapermen=4,caramembagikankeAbidanBibi=5.

● Cibimendapat9permen.Sisapermen=3,caramembagikankeAbidanBibi=4.

● Cibimendapat10permen.Sisapermen=2,caramembagikankeAbidanBibi=3.

● Cibimendapat11permen.Sisapermen=1,caramembagikankeAbidanBibi=2.

● Cibimendapat12permen.Sisapermen=0,caramembagikankeAbidanBibi=1.

Maka,totalbanyaknyacaraadalah6+5+4+3+2+1=21cara.

Jawaban:E

6.Soaliniadalahpermasalahankombinasidenganperulangan.Ilustrasinyaadalahsebagai

berikut.AnggapPakDengklekmemiliki4buahkeranjang:

● Keranjangnomor1untukmenyimpandonatrasastroberi

● Keranjangnomor2untukmenyimpandonatrasacoklat

● Keranjangnomor3untukmenyimpandonatrasavanilla

● Keranjangnomor4untukmenyimpandonatrasacappuccino

AnggapsekarangPakDengkeksedangmemegangkeranjangnomor1.Setiappembelian

donatPakDengklekselaludapatdinyatakansebagaiserangkaianoperasi,dengansetiap

operasiadalahsalahsatudari:

1. Membelidonatdenganrasayangsesuaidengankeranjangsekarang.

2. Menyudahikeranjangsekarangdanmemegangkeranjangnomorselanjutnya.

dansebaliknya,setiapserangkaianoperasiselalumenyatakansebuahpembeliandonat.

KarenaPakDengklekinginmembeli4buahdonat,banyaknyaoperasi(1)adalah4.Karena

PakDengklekmemiliki4buahkeranjang,banyaknyaoperasi(2)adalah3.Maka,Pak

Dengklekharusmelakukan4+3=7buahoperasi.Dari7operasi,4diantaranyaharuslah

operasi(1).Maka,banyaknyacaraadalahC(7,4)=35.

TimOlimpiadeKomputerIndonesia(TOKI)

2

Secaraumum,jikakitamemilikinjenisbarang,dankitainginmemilihkbuahbarang,dengan urutanbarangtidakdipentingkandansetiapjenisbolehdipilihlebihdarisekali,maka

banyaknyacaraadalahC(n+k­1,n)=C(n+k­1,k­1).

Jawaban:E

7.Terdapat200orangyangsalingbersalaman.Jikaaturan“tidakbolehbersalamandengan

pasangansendiri”ditiadakan,jumlahsalamanyangterjadiadalah199+198+ +1+0salaman,

yaitu19900salaman(hitungdenganrumusderetaritmetika).Denganaturan“tidakboleh

bersalamandenganpasangansendiri”,berartiada100salamanyangtidaksahkarenaada

100pasangan.Maka,terdapat19800salamanyangterjadi.

Jawaban:C

8.JikaCpencuri,maka,daripernyataanC,dapatdisimpulkanbahwaAadalahprajurit.Dan

karenaadasetidaknyasatuprajurit(A),makapernyataanBbenar,sehinggaBadalah

prajurit.Namun,inimenyebabkanpernyataanAsalah,karenaadalebihdarisatuorang

prajurit.Kontradiksi.Jadi,Cadalahprajurit.KarenaCprajurit,makadapatdisimpulkanA

pencuridaripernyataanC.Karenaadasetidaknyasatuorangprajurit(C),makaBadalah

prajurit.Sehingga,hanyaBdanCyangmerupakanprajurit.

Jawaban:D

9.Terdapat6permutasi:

● ABC:5+3=8

● ACB:4+3=7

● BAC:5+4=9

● BCA:3+4=7

● CAB:4+5=9

● CBA:3+5=8

Rata­rata=(8+7+9+7+9+8)/6=8.

Jawaban:A

10.Marikitatinjaubilangan­bilanganaslimenurutbanyaknyadigit.

● Terdapat9bilangansatuan(1sampaidengan9).Masing­masingmemiliki1digit.

Maka,untukmenuliskanseluruhbilangansatuandibutuhkan1*9=9digit.

● Terdapat90bilanganpuluhan(10sampaidengan99).Masing­masingmemiliki2

digit.Maka,untukmenuliskanseluruhbilangansatuandibutuhkan2*90=180digit.

● Terdapat900bilanganratusan(100sampaidengan999).Masing­masingmemiliki3

digit.Maka,untukmenuliskanseluruhbilangansatuandibutuhkan3*900=2700digit.

Karena9+180masihkurangdari2013,dan9+180+2700sudahlebihdari2013,makakita

tahubahwaNadalahbilanganratusan.Untukmenuliskanseluruhbilangansatuandan

puluhan,dibutuhkan9+180=189digit.Maka,tersisa2013­189=1824digituntuk

menuliskanbilangan­bilangandari100sampaidenganN.Karenasetiapbilanganratusan

membutuhkan3digit,iniberartiada1824/3=608bilanganyangdituliskan.Dengan

demikian,N=100+608­1=707.

TimOlimpiadeKomputerIndonesia(TOKI)

3

Jawaban:B

11.Dalampapancaturberukurann*n,terdapatn+1buahgarisvertikalyangmembujurdari

ataskebawah,dann+1buahgarishorizontalyangmelintangdarikirikekanan.Untuk

membentuksebuahpersegipanjang,kitaharusmemilihtepat2buahgarisvertikaldantepat

2buahgarishorizontal.Maka,banyaknyacaraadalah:

C(n+1,2)*C(n+1,2)=(C(n+1))^2

Jawaban:B

=(n(n+1)/2)^2

12.Kitaakanmenghitungberapabanyakangkadari1 10000(inklusif)yangtidak

mengandungdigit1.Karenaangka10000jelas­jelasmemilikidigit1,kitabisa

mengabaikannya.Jadi,kitaakanmenghitungberapabanyakangkadari1 9999(inklusif)

yangtidakmengandungdigit1.

Perhatikanbahwaseluruhangkapadaintervalinidapatdinyatakandengan4digitangka.

Angka1dinyatakanoleh0001,angka2dinyatakanoleh0002,danseterusnya.Normalnya,

tiapdigitmemiliki10kemungkinan(0 9).Karenaituada10*10*10*10­1angkadari1 9999

(dikurangi1karenaada0000).Karenakitatidakinginadadigit1,makatiapdigithanya

memiliki9kemungkinan(0,2 9).Iniberartiada9*9*9*9­1angkadari1 9999(inklusif)yang

tidakmengandungdigit1.

Banyaknyaangkadari1 10000(inklusif)yangmengandungsetidaknya1digit1adalah banyaknyaangkadari1 1000(inklusif)dikurangibanyakangkadari1 10000(inklusif)yang

tidakmengandungdigit1,yaitu10000­6560=3440.

Jawaban:C

13.Totalkebahagiaanmaksimumakandiperolehsecaragreedyapabilakitamengurutkan

nilai­nilaidariDewaWarisandannilai­nilaidariDewaSembilanbelas,lalumenikahkan

anak­anakpadaposisiyangsama.

DewaWarisan:

­6,­3,2,5,9

DewaSembilanbelas:

­4,­1,0,7,8

Kebahagiaan=(­6)*(­4)+(­3)*(­1)+2*0+5*7+9*8=24+3+0+35+72= 134. Jawaban:A

14.Angka0dibelakangn!dihasilkandarifaktor10padan!.Karena10=2*5,maka

banyaknyaangka0dibelakangn!=min(banyaknyafaktor2padan!,banyaknyafaktor5

padan!).Karena2<5,makadidalamn!,faktor2pastimuncullebihbanyakdaripadafaktor

5.Olehkarenaitu,banyaknyaangka0dibelakangn!=banyaknyafaktor5padan!.

Banyaknyafaktor5darin!dapatdihitungdenganrumusberikut.Buktinyadiserahkankepada

pembaca.

floor(n/5)+floor(n/(5^2))+floor(n/(5^3))…(sampaisukubernilai0)

TimOlimpiadeKomputerIndonesia(TOKI)

4

Marikitahitungrumustersebutuntuksetiappilihanjawaban:

● 8065/5+8065/25+8065/125+8065/625+8065/3125=2013

● 8064/5+8064/25+8064/125+8064/625+8064/3125=2012

● 8060/5+8060/25+8060/125+8060/625+8060/3125=2012

● 8051/5+8051/25+8051/125+8051/625+8051/3125=2010

● 8050/5+8050/25+8050/125+8050/625+8050/3125=2010

Maka,yangmemenuhiadalah8065.

Jawaban:A

15.Soaliniakanlebihmudahdikerjakanapabilakitamenganggapbahwakartu­kartu

dinomoridari0hingga30,dandisusunsecaramelingkar(bukantumpukan),sedemikian

sehinggauntukkartubernomorX,kartudisebelahkanannyaadalahkartubernomor(X+1)

mod31,dankartudisebelahkirinyaadalahkartubernomor(X­1)mod31.Pertama­tama,

kita“tandai”bahwakartuteratasadalahkartubernomor0.

Perhatikanbahwamelakukan1langkahsamasajadenganmemindahkantandatersebut

sebanyak5kartukesebelahkiri.Olehkarenaitu,dalam45langkah,tandaakanberpindah

sebanyak5*45=225langkahkesebelahkiri.Maka,tandatersebutakanberadapadakartu

nomor(0­225)mod31=­225mod31=­8mod31=23.Maka,kartuteratasadalahkartu

nomor24.

Jawaban:A

16.Dengancarayangsamasepertinomorsebelumya,tandaakanberadapadakartunomor

(0­7*50)mod31=­350mod31=­9mod31=22.Maka,kartuteratasadalahkartunomor

23.

Jawaban:B

17.Selesaikanpersamaanberikut:

10­3x

(mod31)

1­3x

(mod31)

3x­1

(mod31)

3x30

(mod31)

Maka,x=10.

Jawaban:D

18.Banyaknyalangkahminimumakantercapaiapabilakitamelakukanselectionsort.

Padamulanya:

3,2,1,5,7,4,8,6,10,9

● Langkah1: 1,2,3,5,7,4,8,6,10,9

● Langkah2: 1,2,3,4,7,5,8,6,10,9

● Langkah3: 1,2,3,4,5,7,8,6,10,9

● Langkah4: 1,2,3,4,5,6,8,7,10,9

● Langkah5: 1,2,3,4,5,6,7,8,10,9

● Langkah6: 1,2,3,4,5,6,7,8,9,10

Maka,dibutuhkanminimum6langkah.

TimOlimpiadeKomputerIndonesia(TOKI)

5

Jawaban:C

19.Jikakitamenindihnyasepertiini,akanterdapat30segitiga(termasuk3segitigaawalnya).

Jawaban:D 20.Misalkanjari­jaripipatersebutadalahr,maka:

Jawaban:D

20.Misalkanjari­jaripipatersebutadalahr,maka:

Jawaban:D 20.Misalkanjari­jaripipatersebutadalahr,maka: DenganrumusPythagoras, r r 48r =720 r =15

DenganrumusPythagoras,

r

r

48r =720

r =15

Maka,diameternyaadalah30cm.

Jawaban:B

2

2

=(24­r) 2 +12 2 =576­48r+r 2 +144

21.Misalkanf(X)=biayaminimumuntukmengalirkanairdarikeranXmenujukekanan.Kita

hitungnilai­nilaidarif(X)darikanankekirisebagaiberikut.

● f(A3)=16+21=37

● f(B3)=11+14=25

● f(A2)=23+min(f(A3),4+f(B3))=23+min(37,29)=23+29=52

● f(B2)=25+min(f(B3),7+f(A3))=26+min(25,44)=26+25=51

● f(A1)=6+min(f(A2),5+f(B2))=6+min(52,56)=6+52=58

● f(B1)=17+min(f(B2),3+f(A2))=17+min(51,65)=17+51=68

TimOlimpiadeKomputerIndonesia(TOKI)

6

Maka,biayaminimumkeseluruhanadalahmin(13+f(A1),9+f(B1))=min(71,77)=71.

Jawaban:B

22.Banyaknyacaramendapatkan4buahkartudengannilaiyangsamaadalah13cara,

karenaterdapat13macamnilaidanmasing­masingnilaimemilikitepat4buahkartu.Kartu

kelimadapatdipilihdalam52­4=48cara.Maka,banyaknyacaraterjadinyaFourofaKind

adalah13*48=624.

Jawaban:D

23.BanyaknyacaramendapatkannilaiXadalah13,danbanyaknyacaramendapatkannilaiY

adalah12.Banyaknyacaramendapatkan3dari4kartubernilaiXadalahC(4,3)=4.

Banyaknyacaramendapatkan2dari4kartubernilaiYadalahC(4,2)=6.Maka,banyaknya

caraterjadiFullHouseadalah13*12*4*6=3744.

Jawaban:E

24.Marikitahitungtotalwaktuyangdiperlukansetiappeserta.

● Andy:1000/100+floor(1000/80)*45/60=19jam

● Budi:1000/80+floor(1000/75)*30/60=19jam

● Cory:1000/100+floor(1000/70)*15/60=13,5jam

● Didy:1000/80+floor(1000/65)*12/60=15,5jam

● Erna:1000/100+floor(1000/60)*6/60=11,6jam

Maka,pemenangnyaadalahErna.

Jawaban:E

25.Terdapat5buahkemungkinan,yakni:

D

Supir

D

Supir

D

Supir

G

F

C

G

F

C

G

F

C

E

B

A

E

A

B

A

B

E

D

Supir

G

Supir

G

F

C

D

F

C

B

A

E

E

B

A

Jawaban:B

26.Dari5buahkemungkinanpadanomorsebelumnya,hanyaterdapat2buahkemungkinan

orangpadaposisi1:GatauD.JikaGbukanyangpalingdepan,makapastilahD.

Jawaban:D

27.Berdasarkanprinsipinklusi­eksklusi,banyaknyauntaianbitdenganpanjang10yang

diawali000ataudiakhiri1111samadenganbanyakuntaianbitdenganpanjang10yang

diawali000+banyakuntaianbitdenganpanjang10yangdiakhiri1111­banyakuntaianbit

denganpanjang10yangdiawali000dandiakhiri1111.

Banyakuntaianbitdenganpanjang10yangdiawali000ada2^7.

TimOlimpiadeKomputerIndonesia(TOKI)

7

Banyakuntaianbitdenganpanjang10yangdiakhiri1111ada2^6.

Banyakuntaianbitdenganpanjang10yangdiawali000dandiakhiri1111ada2^3.

Maka, banyakuntaianbitdenganpanjang10yangdiawali000ataudiakhiri1111ada

128+64­8=184.

Jawaban:B

28.Tinjaupernyataan­pernyataantersebut.

● BasithadalahanggotaasosiasialumniTOKI.(benar)

● CakraadalahalumniTOKI(belumtentukarenaCakrabelumtentuikutpelatnas)

● Nathanpernahmengikutipelatnas(benar)

● CakrapernahmengikutiIOI(belumtentukarenaCakrabelumtentuikutpelatnas)

Jawaban:D

29.Berdasarkanprinsipinklusi­eksklusi,banyaknyanomorteleponyangmudahdiingat

adalah(banyaknyanomordenganabc=def)+(banyaknyanomordenganabc=efg)­

(banyaknyanomordenganabc=defdanabc=efg).

Banyaknyanomordenganabc=defada10*10*10*10kemungkinan.(a,b,c,g

masing­masingmemiliki10kemungkinan).

Banyaknyanomordenganabc=efgada10*10*10*10kemungkinan.(a,b,c,d

masing­masingmemiliki10kemungkinan).

Ketikaabc=defdanabc=efg,iniberartia=d=e,b=e=f,c=f=g.Jikakitatelusurilebih

lanjut,iniberartia=b=c=d=e=f=g,yangberartisemuadigitsama.Ada10

kemungkinan.

Maka,banyaknyanomorteleponyangmudahdiingatadasebanyak19990.

Jawaban:E

30.KitagambarkanDiagramVennuntukmasalahini:

Jawaban:E 30.KitagambarkanDiagramVennuntukmasalahini:

Untukmembuatnya,pertamahitungbanyaknyabilanganyanghabisdibagi3,5,dan7,yaitu

floor(2013/(3*5*7))=19.Lalu,hitungbanyaknyabilanganyanghabisdibagi3dan5,yaitu

TimOlimpiadeKomputerIndonesia(TOKI)

8

floor(2013/(3*5))=134.Karenasudahterisi19,makasisanya115.Danseterusnya.

Totalbilanganyangdicetakmerahmerupakanjawabanyangdiinginkan,yakni461+115+

230+154=960.

Jawaban:B

Bagian B: Algoritmika (20 Soal)

31.Fungsipanggil1()bersifatrekursif.Marikitaselesaikandengancarabottom­up.

Perhatikanbahwanilaidaripanggil1(x)bergantungpadanilaipanggil1(x­1)danpanggil1(x­2).

Olehkarenaitu,kitahitungnilaifungsiinidarinilaixyangkecilkebesar.

● panggil1(1)=panggil1(2)=0

● panggil1(3)=panggil1(2)+2*panggil1(1)+3=0+2*0+3=3

● panggil1(4)=panggil1(3)+2*panggil1(2)+3=3+2*0+3=6

● panggil1(5)=panggil1(4)+2*panggil1(3)+3=6+2*3+3=15

● panggil1(6)=panggil1(5)+2*panggil1(4)+3=15+2*6+3=30

● panggil1(7)=panggil1(6)+2*panggil1(5)+3=30+2*15+3=63

Jawaban:D

32.Fungsisikat()bersifatrekursif.Marikitaselesaikandengancarabottom­up.Perhatikan

bahwanilaidarisikat(x,y)bergantungpadanilaisikat(x+1,y)dansikat(x,y­1).Olehkarena

itu,kitahitungnilaifungsiinidarinilaixyangbesarkekecil,dandarinilaiyyangkecilke

besar.

● sikat(1,1)=1

● sikat(2,2)=2

● sikat(1,2)=3*sikat(2,2)+2*sikat(1,1)=3*2+2*1=8

● sikat(3,3)=3

● sikat(2,3)=3*sikat(3,3)+2*sikat(2,2)=3*3+2*2=13

● sikat(1,3)=3*sikat(2,3)+2*sikat(1,2)=3*13+2*8=55

Jawaban:B

33.Fungsihitung()bersifatrekursif.Carasebelumnyatidakpraktisdigunakankarenaterlalu

banyakjikakitaharusmenghitungnilaihitung(0),hitung(1),…,hitung(2903).Perhatikan

bahwanilaihitung(n)bergantungpadanilaihitung(ndiv5).Dengankatalain,padasetiap

pemanggilanfungsihitung,nilainselaluberkurangmenjadiseperlimanya.Olehkarenaitu, lebihcepatjikakitamenghitungdengancaratop­down. hitung(2903) =hitung(580)+3

=hitung(116)+0+3

=hitung(23)+1+0+3

=hitung(4)+3+1+0+3

=hitung(0)+4+3+1+0+3

=0+4+3+1+0+3

=11

Jawaban:C

TimOlimpiadeKomputerIndonesia(TOKI)

9

34.Pertama­tama,kitaanalisisterlebihdahulu,apayangsebenarnyafungsiwow(n)hitung?

Jikakitabacadanpelajarikodenyabaik­baik,rupanyajikafaktorisasiprimadarinadalahp 1 ^a 1 *p 2 ^a 2 *…*p k ^a k ,makawow(n)bernilai(a 1 +1)*(a 2 +1)*…*(a k +1).

Olehkarenaitu,kitadapatsajamencobamemfaktorisasikansetiappilihanjawaban:

­>wow(32)=6

­>wow(512)=10

­>wow(1000)=4*4=16

­>wow(48)=5*2=10

­>wow(38)=2*2=4

● 32=2^5

● 512=2^9

● 1000=2^3*5^3

● 48=2^4*3

● 38=2*19

Darisemuapilihandiatas,nilainterkecilyangmenghasilkanwow(n)=10adalah48.

Jawaban:D

35.Kitamemilikisebuahstrukturdatastack.Padaawalnya,stacktersebutberisinilai­nilai1,

3,5,7,9dariatas(head)kebawah(tail).Fungsipop()akanmembuangnilaiteratasdari

stackdanmengembalikannya.Jikastackkosong,makapop()akanmengembalikannilai­1.

Nilaitersebuttidakbenar­benardibuang,namunhead­nyasajayangbergerak1elemen

mendekatitail.

Kondisiawalstackadalahsebagaiberikut:

head

       

tail

1

3

5

7

9

 

Setelahdilakukanpop()satukali,kondisinyaberubahmenjadi:

head

     

tail

3

5

7

9

 

Kemudian,3nilaiteratasakandi­pop()sekaligusdicetak.Maka,yangtercetakadalah:

3

5

7

Jawaban:C

36.Kitacobasimulasikankodetersebut.

x=1,pop()=1,kondisiberubahmenjadi:

head

     

tail

3

5

7

9

 

Karena1<>­1,makapop()dipanggillagi(menghasilkandanmembuang3),laludicetak.

Kondisiberubahmenjadi:

head

   

tail

5

7

9

 

TimOlimpiadeKomputerIndonesia(TOKI)

10

x=2,pop()=5,kondisiberubahmenjadi:

head

 

tail

7

9

 

Karena5<>­1,makapop()dipanggillagi(menghasilkandanmembuang7),laludicetak.

Kondisiberubahmenjadi: head tail 9
Kondisiberubahmenjadi:
head
tail
9

x=3,pop()=9,kondisiberubahmenjadi:

head,tailhead tail 9 x=3,pop()=9,kondisiberubahmenjadi:

Karena9<>­1,makapop()dipanggillagi(menghasilkan­1),laludicetak.

Maka,yangtercetakadalah:

3

7

­1

Jawaban:D

37.FungsiBunga()bersifatrekursif.Marikitaselesaikandengancarabottom­up.Perhatikan

bahwanilaidariBunga(x)bergantungpadanilaidariBunga(y),untuk0<=y<=x. Oleh karenaitu,kitahitungnilaifungsiinidarinilaixyangkecilkebesar.

● Bunga(0)=1

● Bunga(1)=Bunga(0)=1

● Bunga(2)=Bunga(0)+Bunga(1)=1+1=2

● Bunga(3)=Bunga(0)+Bunga(1)+Bunga(2)=1+1+2=4

Jawaban:D

38.Jikakitateruskanmenghitungnilai­nilaiBungapadanomorsebelumnya,makaakan

terlihatpolabahwaBunga(x)=2^(x­1)untukx>0.Olehkarenaitu,Bunga(21)=2^20=

1048576.Halinitentusajadapatdibuktikandenganmetodeinduksi,yangbuktinya

diserahkankepadaparapembaca.

Jawaban:B

39.Marikitasimulasikanloopwhilepadakodetersebut.Perhatikanbahwapotongankode:

if(num1mod2+num2mod2=1)then

dare:=dare+temp

else

dare:=dare+((num1mod2+num2mod2)*temp);

sebenarnyasamasajadengan

dare:=dare+((num1mod2+num2mod2)*temp);

TimOlimpiadeKomputerIndonesia(TOKI)

11

sehinggadapatmempermudahpenghitungan.

Hasilsimulasi:

Iterasi

num1

num2

num1mod2+num2mod2

dare

temp

0

16

8

0

0

1

1

8

4

0

0

2

2

4

2

0

0

4

3

2

1

1

0

8

4

1

0

1

8

16

5

0

0

 

24

32

Jawaban:B

40.Hasilsimulasi:

 

Iterasi

num1

num2

num1mod2+num2mod2

dare

temp

0

120

30

0

0

1

1

60

15

1

0

2

2

30

7

1

2

4

3

15

3

2

6

8

4

7

1

2

22

16

5

3

0

1

54

32

6

1

0

1

86

64

7

0

0

 

150

128

Jawaban:B

41.Terdapatsetidaknyaduacarauntukmenjawabsoalini.

Cara1:Pilihanjawabanyangmanayangcocokdengankeduacontohberikut?

● Masukan:168Keluaran:24

● Masukan:12030

Keluaran:150

Tentusaja,yangcocokadalahA.Menjumlahkan2buahbilanganbulatpositif.

Cara2:Menganalisisprogramtersebutlebihmendalam.Perhatikanbahwayangdilakukan

olehprogramtersebutadalahmemproseskeduabilanganmasukanbit­per­bit,darinilai satuan,duaan,empatan,delapanan,enambelasan,danseterusnya(yakni,dalambasis

dua).Nilaitempadalah2^i,denganiadalahposisibitsaatini.Nilainum1mod2menunjukkan

apakahbitke­idarinum1menyalaatautidak.Nilainum2mod2menunjukkanapakahbitke­i

darinum2menyalaatautidak.Apabiladijumlahkan,inimenunjukkanbanyaknyabityang

menyalapadaposisike­i.Kemudian,nilaidareditambahkandengan(temp*banyaknyabit

yangmenyala).Padaakhirnya,semuabitakandiprosesdaninimenunjukkanbahwa

sebenarnyayangdilakukanadalahmenjumlahkankeduabilangantersebut.

Jawaban:A

TimOlimpiadeKomputerIndonesia(TOKI)

12

42.KarenaM=100,tidakpraktiskalaukitamelakukansimulasiprogram.Kitaharus

melakukananalisismengenaiapayangsebenarnyadilakukanprogram.Ternyata,program inimelakukanalgoritmaSieveofEratosthenes.Setelahdijalankan,A[x]akanbernilaitruejika

xprima(atau1)danfalsejikaselainnya.B[x]akanbernilaibilanganprimaterkecilke­x.

Sehingga,nilaiB[10]adalahbilanganprimake­10yakni29.

Jawaban:D

43.Cukuplakukansimulasiterhadapprogramtersebut.Potongankodeini:

t:=A[i]xorA[j];

A[i]:=txorA[i];

A[j]:=txorA[i]

berartimenukarkannilaiA[i]danA[j].

i

A[1]

A[2]

A[3]

A[4]

A[5]

   

2

1 3

 

4

5

1

 

2

1 3

 

4

5

2

 

1

2 3

 

4

5

3

 

2

3 1

 

4

5

4

 

3

4 2

 

1

5

5

 

4

5 3

 

2

1

Jawaban:B

44.Lakukansimulasinyasecaratop­down(pemanggilanfungsikambing(x)untukx>10tidak

ditulisuntukmenghemattempat):

kambing(8) data[8] kambing(4) data[4] kambing(9) data[9]

kambing(2) data[2]

kambing(10) data[10] kambing(5) data[5]

kambing(1) data[1]

kambing(6) data[6]

kambing(3) data[3]

kambing(7) data[7]

Dengandemikian,urutanindekspencetakanadalah8,4,9,2,10,5,1,6,3,7.Sehingga,

yangtercetakadalah86591013427.

Jawaban:D

TimOlimpiadeKomputerIndonesia(TOKI)

13

45.Agarhasilyangtercetakterurutmenaik,menuruthasilpadasoalsebelumnya,makahal

iniharusberlaku:data[8]=1,data[4]=2,data[9]=3,…,data[7]=10.Maka,arrayyang

memenuhiadalah(7,4,9,2,6,8,10,1,3,5).

Jawaban:A

46.Cukuplakukansimulasiterhadapprogramtersebut.

x 13

40 20

10

5

16

8

4

2

1

i 0

1 2

3

4

5

6

7

8

9

Jawaban:E

47.Perhatikanfungsirekursifghi().Untukmemudahkansimulasi,kitaharusmencaribentuk

tertutup(non­rekursif)darifungsiini.Jikadilakukananalisismendalam,makaghi(x,b)

bernilai:

● x,jikab=1

● x^bmod100,jikab>1.

Setelahmengetahuifaktaini,kitalakukansimulasiterhadapprogramtersebut:

def(7,100) =def(7,abc(100))

=def(7,298)

=def(7,abc(298))

=def(7,890)

=def(7,abc(890))

=def(7,2669)

=ghi(7,2669)mod100

=(7^2669mod100)mod100

=7^2669mod100

=7

Hasilpenghitunganterakhirdiatasdapatdilakukanmenggunakanteknikexponentiationby

squaringataumenggunakanteoremaEuler.

Jawaban:B

48.Kembalilakukansimulasiterhadapprogramyangtelahdimodifikasitersebut:

def(7,151) =def(7,abc(151))

=def(7,301)

=def(7,abc(301))

=def(7,601)

=ghi(7,601)mod100

=(7^601mod100)mod100

=7^601mod100

=7

Hasilpenghitunganterakhirdiatasdapatdilakukanmenggunakanteknikexponentiationby

squaringataumenggunakanteoremaEuler.

Jawaban:B

49.Kembalilakukansimulasiterhadapprogramyangtelahdimodifikasitersebut:

def(3,30)

=def(3,abc(30))

=def(3,88)

=def(3,abc(88))

=def(3,260)

=def(3,abc(260))

=def(3,779)

=ghi(3,779)mod10

=(3^779mod100)mod10

=67mod10

=7

Hasilpenghitungankeduadariterakhirdiatasdapatdilakukanmenggunakanteknik

exponentiationbysquaringataumenggunakanTeoremaEuler.

Jawaban:C

50.Cukuplakukansimulasiterhadapprogramtersebut.

tebak_angka(18,30)=tebak_angka(18,26)

=tebak_angka(18,22)

=tebak_angka(18,18)

=tebak_angka(18,14)

=tebak_angka(14,18)

=tebak_angka(14,13)

=tebak_angka(13,14)

=tebak_angka(13,10)

=tebak_angka(10,13)

=tebak_angka(10,12)

=tebak_angka(10,11)

=tebak_angka(10,10)

=tebak_angka(10,9)

Jawaban:E

=tebak_angka(9,10)

=tebak_angka(9,5)

=tebak_angka(5,9)

=tebak_angka(5,8)

=tebak_angka(5,7)

=tebak_angka(5,6)

=tebak_angka(5,5)

=tebak_angka(5,4)

=tebak_angka(4,5)

=5

TimOlimpiadeKomputerIndonesia(TOKI)

15