Anda di halaman 1dari 15

PEMBAHASAN OLIMPIADE SAINS 2013

TINGKAT KABUPATEN/KOTA
BIDANG INFORMATIKA/KOMPUTER

Bagian A: Aritmetika dan Logika (30 Soal)


1.Lampuyangtidakterhubungdengansakelaradalahlampulampuyangbernomorbukan
merupakankelipatan2,3,5,7,maupun11.Nomornomoryangmemenuhiadalah1,dan
yangmemilikifaktorprimadiatas11,yakniada6buah:
1=(tidakmemilikifaktorprima)
13=13
17=17
19=19
23=23
29=29
Jawaban:D
2.BanyaknyalampuyangmenyalaakanmaksimumapabilaSugengmenekansakelarB,C,
D,danE.Setelahsakelarsakelartersebutditekan,akanterdapat16lampuyangmenyala.
Halinidiperolehdengancaracobacoba.Sebagaicontoh,akanmenguntungkanapabila
SugengmenekansakelarC,D,danEkarenatidakadalampuyangbentrok,danseterusnya.
Jawaban:D
3.Dengancarabacktracking,yaknimencobacobasemuacarayangmungkin,ditemukan11
cara,yaknisebagaiberikut.Hurufyangsamaterdapatpadadominoyangsama.

aabb
aabb
aabb
aabb
aabb
aabc
ccdd
ccde
cdde
cdee
cdef
ddbc
eeff
ffde
cffe
cdff
cdef
eeff
aabc
debc
deff

abbc
addc
eeff

abcc
abdd
eeff

abcc
abde
ffde

abcd
abcd
eeff

Jawaban:B
4.Marikitanomoriobjekobjektersebutdarikirikekanan.K=katak,B=batu,D=daun,S=
seberangsungai.
0

10

11

12

Misalkanf(x)=banyaknyacarauntukmencapaiseberangsungaidaripetaknomorx.Mari

1
TimOlimpiadeKomputerIndonesia(TOKI)

kitahitungnilaif(x)darixbesarkekecil.Tentusajakitatidakperlumenghitungf()untukpetak
yangberisidaun.
f(12)=1
(diamditempat)
f(11)=f(12)=1
(lompatkepetak12)
f(9)=f(11)=1
(lompatkepetak11)
f(7)=f(9)=1
(lompatkepetak9)
f(6)=f(7)=1
(lompatkepetak7)
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
(lompatkepetak4)
f(1)=f(2)=3
(lompatkepetak2)
f(0)=f(1)+f(2)=3+3=6
(lompatkepetak1atau2)
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.

2
TimOlimpiadeKomputerIndonesia(TOKI)

Secaraumum,jikakitamemilikinjenisbarang,dankitainginmemilihkbuahbarang,dengan
urutanbarangtidakdipentingkandansetiapjenisbolehdipilihlebihdarisekali,maka
banyaknyacaraadalahC(n+k1,n)=C(n+k1,k1).
Jawaban:E
7.Terdapat200orangyangsalingbersalaman.Jikaaturantidakbolehbersalamandengan
pasangansendiriditiadakan,jumlahsalamanyangterjadiadalah199+198+...+1+0salaman,
yaitu19900salaman(hitungdenganrumusderetaritmetika).Denganaturantidakboleh
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
Ratarata=(8+7+9+7+9+8)/6=8.
Jawaban:A
10.Marikitatinjaubilanganbilanganaslimenurutbanyaknyadigit.

Terdapat9bilangansatuan(1sampaidengan9).Masingmasingmemiliki1digit.
Maka,untukmenuliskanseluruhbilangansatuandibutuhkan1*9=9digit.
Terdapat90bilanganpuluhan(10sampaidengan99).Masingmasingmemiliki2
digit.Maka,untukmenuliskanseluruhbilangansatuandibutuhkan2*90=180digit.
Terdapat900bilanganratusan(100sampaidengan999).Masingmasingmemiliki3
digit.Maka,untukmenuliskanseluruhbilangansatuandibutuhkan3*900=2700digit.
Karena9+180masihkurangdari2013,dan9+180+2700sudahlebihdari2013,makakita
tahubahwaNadalahbilanganratusan.Untukmenuliskanseluruhbilangansatuandan
puluhan,dibutuhkan9+180=189digit.Maka,tersisa2013189=1824digituntuk
menuliskanbilanganbilangandari100sampaidenganN.Karenasetiapbilanganratusan
membutuhkan3digit,iniberartiada1824/3=608bilanganyangdituliskan.Dengan
demikian,N=100+6081=707.

3
TimOlimpiadeKomputerIndonesia(TOKI)

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
=(n(n+1)/2)^2
Jawaban:B
12.Kitaakanmenghitungberapabanyakangkadari1..10000(inklusif)yangtidak
mengandungdigit1.Karenaangka10000jelasjelasmemilikidigit1,kitabisa
mengabaikannya.Jadi,kitaakanmenghitungberapabanyakangkadari1..9999(inklusif)
yangtidakmengandungdigit1.
Perhatikanbahwaseluruhangkapadaintervalinidapatdinyatakandengan4digitangka.
Angka1dinyatakanoleh0001,angka2dinyatakanoleh0002,danseterusnya.Normalnya,
tiapdigitmemiliki10kemungkinan(0..9).Karenaituada10*10*10*101angkadari1..9999
(dikurangi1karenaada0000).Karenakitatidakinginadadigit1,makatiapdigithanya
memiliki9kemungkinan(0,2..9).Iniberartiada9*9*9*91angkadari1..9999(inklusif)yang
tidakmengandungdigit1.
Banyaknyaangkadari1..10000(inklusif)yangmengandungsetidaknya1digit1adalah
banyaknyaangkadari1..1000(inklusif)dikurangibanyakangkadari1..10000(inklusif)yang
tidakmengandungdigit1,yaitu100006560=3440.
Jawaban:C
13.Totalkebahagiaanmaksimumakandiperolehsecaragreedyapabilakitamengurutkan
nilainilaidariDewaWarisandannilainilaidariDewaSembilanbelas,lalumenikahkan
anakanakpadaposisiyangsama.
DewaWarisan:
DewaSembilanbelas:

6,3,2,5,9
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)

4
TimOlimpiadeKomputerIndonesia(TOKI)

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.Soaliniakanlebihmudahdikerjakanapabilakitamenganggapbahwakartukartu
dinomoridari0hingga30,dandisusunsecaramelingkar(bukantumpukan),sedemikian
sehinggauntukkartubernomorX,kartudisebelahkanannyaadalahkartubernomor(X+1)
mod31,dankartudisebelahkirinyaadalahkartubernomor(X1)mod31.Pertamatama,
kitatandaibahwakartuteratasadalahkartubernomor0.
Perhatikanbahwamelakukan1langkahsamasajadenganmemindahkantandatersebut
sebanyak5kartukesebelahkiri.Olehkarenaitu,dalam45langkah,tandaakanberpindah
sebanyak5*45=225langkahkesebelahkiri.Maka,tandatersebutakanberadapadakartu
nomor(0225)mod31=225mod31=8mod31=23.Maka,kartuteratasadalahkartu
nomor24.
Jawaban:A
16.Dengancarayangsamasepertinomorsebelumya,tandaakanberadapadakartunomor
(07*50)mod31=350mod31=9mod31=22.Maka,kartuteratasadalahkartunomor
23.
Jawaban:B
17.Selesaikanpersamaanberikut:
103x
(mod31)
13x
(mod31)
3x1
(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.

5
TimOlimpiadeKomputerIndonesia(TOKI)

Jawaban:C
19.Jikakitamenindihnyasepertiini,akanterdapat30segitiga(termasuk3segitigaawalnya).

Jawaban:D
20.Misalkanjarijaripipatersebutadalahr,maka:

DenganrumusPythagoras,
r2
=(24r)2+122
r2
=57648r+r2+144
48r
=720
r
=15
Maka,diameternyaadalah30cm.
Jawaban:B
21.Misalkanf(X)=biayaminimumuntukmengalirkanairdarikeranXmenujukekanan.Kita
hitungnilainilaidarif(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

6
TimOlimpiadeKomputerIndonesia(TOKI)

Maka,biayaminimumkeseluruhanadalahmin(13+f(A1),9+f(B1))=min(71,77)=71.
Jawaban:B
22.Banyaknyacaramendapatkan4buahkartudengannilaiyangsamaadalah13cara,
karenaterdapat13macamnilaidanmasingmasingnilaimemilikitepat4buahkartu.Kartu
kelimadapatdipilihdalam524=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:
DSupir
DSupir
G
F
C
G
F
C
E
B
A
E
A
B
DSupir
G
F
C
B
A
E

DSupir
G
F
C
A
B
E

GSupir
D
F
C
E
B
A

Jawaban:B
26.Dari5buahkemungkinanpadanomorsebelumnya,hanyaterdapat2buahkemungkinan
orangpadaposisi1:GatauD.JikaGbukanyangpalingdepan,makapastilahD.
Jawaban:D
27.Berdasarkanprinsipinklusieksklusi,banyaknyauntaianbitdenganpanjang10yang
diawali000ataudiakhiri1111samadenganbanyakuntaianbitdenganpanjang10yang
diawali000+banyakuntaianbitdenganpanjang10yangdiakhiri1111banyakuntaianbit
denganpanjang10yangdiawali000dandiakhiri1111.
Banyakuntaianbitdenganpanjang10yangdiawali000ada2^7.

7
TimOlimpiadeKomputerIndonesia(TOKI)

Banyakuntaianbitdenganpanjang10yangdiakhiri1111ada2^6.
Banyakuntaianbitdenganpanjang10yangdiawali000dandiakhiri1111ada2^3.
Maka,banyakuntaianbitdenganpanjang10yangdiawali000ataudiakhiri1111ada
128+648=184.
Jawaban:B
28.Tinjaupernyataanpernyataantersebut.
BasithadalahanggotaasosiasialumniTOKI.(benar)
CakraadalahalumniTOKI(belumtentukarenaCakrabelumtentuikutpelatnas)
Nathanpernahmengikutipelatnas(benar)
CakrapernahmengikutiIOI(belumtentukarenaCakrabelumtentuikutpelatnas)
Jawaban:D
29.Berdasarkanprinsipinklusieksklusi,banyaknyanomorteleponyangmudahdiingat
adalah(banyaknyanomordenganabc=def)+(banyaknyanomordenganabc=efg)
(banyaknyanomordenganabc=defdanabc=efg).
Banyaknyanomordenganabc=defada10*10*10*10kemungkinan.(a,b,c,g
masingmasingmemiliki10kemungkinan).
Banyaknyanomordenganabc=efgada10*10*10*10kemungkinan.(a,b,c,d
masingmasingmemiliki10kemungkinan).
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:

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

8
TimOlimpiadeKomputerIndonesia(TOKI)

floor(2013/(3*5))=134.Karenasudahterisi19,makasisanya115.Danseterusnya.
Totalbilanganyangdicetakmerahmerupakanjawabanyangdiinginkan,yakni461+115+
230+154=960.
Jawaban:B

Bagian B: Algoritmika (20 Soal)


31.Fungsipanggil1()bersifatrekursif.Marikitaselesaikandengancarabottomup.
Perhatikanbahwanilaidaripanggil1(x)bergantungpadanilaipanggil1(x1)danpanggil1(x2).
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.Marikitaselesaikandengancarabottomup.Perhatikan
bahwanilaidarisikat(x,y)bergantungpadanilaisikat(x+1,y)dansikat(x,y1).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,
lebihcepatjikakitamenghitungdengancaratopdown.
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

9
TimOlimpiadeKomputerIndonesia(TOKI)

34.Pertamatama,kitaanalisisterlebihdahulu,apayangsebenarnyafungsiwow(n)hitung?
Jikakitabacadanpelajarikodenyabaikbaik,rupanyajikafaktorisasiprimadarinadalahp1^a1
*p2^a2**pk^ak,makawow(n)bernilai(a1+1)*(a2+1)**(ak+1).
Olehkarenaitu,kitadapatsajamencobamemfaktorisasikansetiappilihanjawaban:
32=2^5
>wow(32)=6
512=2^9
>wow(512)=10
1000=2^3*5^3
>wow(1000)=4*4=16
48=2^4*3
>wow(48)=5*2=10
38=2*19
>wow(38)=2*2=4
Darisemuapilihandiatas,nilainterkecilyangmenghasilkanwow(n)=10adalah48.
Jawaban:D
35.Kitamemilikisebuahstrukturdatastack.Padaawalnya,stacktersebutberisinilainilai1,
3,5,7,9dariatas(head)kebawah(tail).Fungsipop()akanmembuangnilaiteratasdari
stackdanmengembalikannya.Jikastackkosong,makapop()akanmengembalikannilai1.
Nilaitersebuttidakbenarbenardibuang,namunheadnyasajayangbergerak1elemen
mendekatitail.
Kondisiawalstackadalahsebagaiberikut:
head
1

tail
3

Setelahdilakukanpop()satukali,kondisinyaberubahmenjadi:
head
3

tail
5

Kemudian,3nilaiteratasakandipop()sekaligusdicetak.Maka,yangtercetakadalah:
3
5
7
Jawaban:C
36.Kitacobasimulasikankodetersebut.
x=1,pop()=1,kondisiberubahmenjadi:
head
3

tail
5

Karena1<>1,makapop()dipanggillagi(menghasilkandanmembuang3),laludicetak.
Kondisiberubahmenjadi:
head
5

tail
7

10
TimOlimpiadeKomputerIndonesia(TOKI)

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

tail
9

Karena5<>1,makapop()dipanggillagi(menghasilkandanmembuang7),laludicetak.
Kondisiberubahmenjadi:
head

tail

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

Karena9<>1,makapop()dipanggillagi(menghasilkan1),laludicetak.
Maka,yangtercetakadalah:
3
7
1
Jawaban:D
37.FungsiBunga()bersifatrekursif.Marikitaselesaikandengancarabottomup.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.JikakitateruskanmenghitungnilainilaiBungapadanomorsebelumnya,makaakan
terlihatpolabahwaBunga(x)=2^(x1)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)

11
TimOlimpiadeKomputerIndonesia(TOKI)

sehinggadapatmempermudahpenghitungan.
Hasilsimulasi:
Iterasi

num1

num2

num1mod2+num2mod2

dare

temp

16

16

24

32

Jawaban:B
40.Hasilsimulasi:
Iterasi

num1

num2

num1mod2+num2mod2

dare

temp

120

30

60

15

30

15

22

16

54

32

86

64

150

128

Jawaban:B
41.Terdapatsetidaknyaduacarauntukmenjawabsoalini.
Cara1:Pilihanjawabanyangmanayangcocokdengankeduacontohberikut?
Masukan:168Keluaran:24
Masukan:12030
Keluaran:150
Tentusaja,yangcocokadalahA.Menjumlahkan2buahbilanganbulatpositif.
Cara2:Menganalisisprogramtersebutlebihmendalam.Perhatikanbahwayangdilakukan
olehprogramtersebutadalahmemproseskeduabilanganmasukanbitperbit,darinilai
satuan,duaan,empatan,delapanan,enambelasan,danseterusnya(yakni,dalambasis
dua).Nilaitempadalah2^i,denganiadalahposisibitsaatini.Nilainum1mod2menunjukkan
apakahbitkeidarinum1menyalaatautidak.Nilainum2mod2menunjukkanapakahbitkei
darinum2menyalaatautidak.Apabiladijumlahkan,inimenunjukkanbanyaknyabityang
menyalapadaposisikei.Kemudian,nilaidareditambahkandengan(temp*banyaknyabit
yangmenyala).Padaakhirnya,semuabitakandiprosesdaninimenunjukkanbahwa
sebenarnyayangdilakukanadalahmenjumlahkankeduabilangantersebut.
Jawaban:A

12
TimOlimpiadeKomputerIndonesia(TOKI)

42.KarenaM=100,tidakpraktiskalaukitamelakukansimulasiprogram.Kitaharus
melakukananalisismengenaiapayangsebenarnyadilakukanprogram.Ternyata,program
inimelakukanalgoritmaSieveofEratosthenes.Setelahdijalankan,A[x]akanbernilaitruejika
xprima(atau1)danfalsejikaselainnya.B[x]akanbernilaibilanganprimaterkecilkex.
Sehingga,nilaiB[10]adalahbilanganprimake10yakni29.
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]

Jawaban:B
44.Lakukansimulasinyasecaratopdown(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)
kambing(3)

data[6]

data[3]
kambing(7)

data[7]

Dengandemikian,urutanindekspencetakanadalah8,4,9,2,10,5,1,6,3,7.Sehingga,
yangtercetakadalah86591013427.
Jawaban:D

13
TimOlimpiadeKomputerIndonesia(TOKI)

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

16

Jawaban:E
47.Perhatikanfungsirekursifghi().Untukmemudahkansimulasi,kitaharusmencaribentuk
tertutup(nonrekursif)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

14
TimOlimpiadeKomputerIndonesia(TOKI)

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)
=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
Jawaban:E

15
TimOlimpiadeKomputerIndonesia(TOKI)

Anda mungkin juga menyukai