• Tidak ada hasil yang ditemukan

Try Out OSK2017 Kunci Jawaban Pembahasan

N/A
N/A
Protected

Academic year: 2018

Membagikan "Try Out OSK2017 Kunci Jawaban Pembahasan"

Copied!
7
0
0

Teks penuh

(1)

Kunci Jawaban & Hint Try Out OSK 2017

Oleh : Lie, Maximilianus Maria Kolbe

1. Jawaban : E

Expected Difficulty : Easy

Hint : Gunakan sistem persamaan linear untuk menyelesaikan problem ini. 2. Jawaban : A

Expected Difficulty : Medium

Hint : Perhatikan bahwa 2017 adalah angka prima. Pelajari lebih lanjut tentang Fermat’s Little Theorem.

3. Jawaban : C

Expected Difficulty : Easy

Hint : Pelajari Logika Matematika (Propositional Logic with Quantifiers). 4. Jawaban : A

Expected Difficulty : Medium

Hint : Ubah kasus tersebut menjadi persamaan ax+by= 1. Pelajari lebih lanjut mengenai Extended Euclidean untuk mempermudah pengerjaan soal. Selebihnya dapat di bruteforce.

5. Jawaban : C

Expected Difficulty : Medium

Hint : Dengan hint yang di dapatkan dari nomor sebelumnya (melalui Extended Euclidean), gunakan Euler’s Totient Function untuk menyelesaikan soal ini.

6. Jawaban : C

Expected Difficulty : Hard

Hint 1 : Apabila Anda menghitung FPB hanya dari 2 bilangan pertama saja, maka Anda dapat mengetahui bahwa jawaban yang mungkin adalah di antara 2 atau 6.

Hint 2 : Anda dapat melakukan pembuktian dengan aturan modullo bahwa 2002N+ 2 habis dibagi 6 untuk N> 0.

7. Jawaban : TIDAK ADA (SALAH SOAL)

8. Jawaban : C

Expected Difficulty : Easy

Hint : Perhatikan bahwa setiap lampu nya akan berubah sebanyak banyak faktor dari nomor lampu tersebut.

9. Jawaban : B

Expected Difficulty : Easy Hint : Tidak ada.

10. Jawaban : A

(2)

11. Jawaban : E

Expected Difficulty : Easy Hint : Tidak ada.

12. Jawaban : D

Expected Difficulty : Easy Hint : Tidak ada.

13. Jawaban : C

Expected Difficulty : Easy (Time Waster)

Hint : Gunakan Inklusi-Eksklusi untuk menyelesaikan permasalahan ini.

14. Jawaban : D

Expected Difficulty : Medium (Tricky)

Hint 1 : Dengan menggunakan sifat A+A′=SA=SA′, Anda akan dapat menyelesaikan soal ini dengan mudah.

Hint 2 : Perhatikan kata “setidaknya” pada soal.

15. Jawaban : B

Expected Difficulty : Easy

Hint : Apabila Anda mengerti sifat segitiga (untuk a, b, c merupakan panjang sisi segitiga dimana maka ) maka Anda akan dapat menyelesaikan soal ini dengan mudah.

a<b<c a+b>c

16. Jawaban : C

Expected Difficulty : Medium/Hard

Hint : Perhatikan bahwa jawaban yang dihasilkan (berdasarkan nilai N yang berbeda) akan

membentuk pola/deret yang kemudian dapat diselesaikan baik dengan rumus deret aritmatika atau dengan sigma (penjumlahan).

17. Jawaban : E

Expected Difficulty : Medium

Hint : Anda dapat merubah permasalahan tersebut menjadi lebih mudah apabila Anda memilih ketuanya terlebih dahulu, kemudian baru menghitung banyaknya kemungkinan tim yang dapat dibentuk dengan ketua yang sudah ditunjuk sebelumnya. Hasil dari perhitungan tersebut cukup dikali dengan 15 (karena ada 15 kemungkinan berbeda yang dapat ditunjuk sebagai ketua). Another Solution : Dengan menggunakan sigma dan permainan aljabar, Anda dapat menemukan rumus dari permasalahan ini. Cara ini tidak disarankan, tetapi apabila Anda tidak kritis dalam menganalisa soal dan lebih memberatkan sisi perhitungan, soal ini juga bisa diselesaikan dengan cara tersebut.

18. Jawaban : A

Expected Difficulty : Medium

Hint : Anda dapat menyelesaikan permasalahan ini dengan Kombinatorik dan Prinsip

(3)

Another Solution : Anda dapat menggunakan Dynamic Programming. MIsalkan fungsi f(x,y) adalah banyaknya cara untuk mengunjungi titik (x,y) tanpa melewati batu. Jika titik (x,y) dianggap invalid apabila (x,y) diluar grid atau terdapat batu di titik (x,y), maka

dengan base case . (x, ) 0, if (x, ) invalid | f(x , ) (x, ), otherwise}

f y = { y − 1 y +f y− 1 f(1, )1 = 1

Kemudian Anda dapat mensimulasikan perhitungan fungsi tersebut sebanyak 10*10=100 kali, sangat tidak disarankan, tetapi solusi yang benar.

19. Jawaban : B

Expected Difficulty : Medium (Time Waster)

Hint : Cara yang dilakukan sama persis dengan nomor sebelumnya. Hanya saja baik dengan cara Kombinatorik maupun Dynamic Programming, keduanya tetap menghabiskan waktu karena soal ini memang di design sebagai Time Waster Problem. Meskipun demikian, cara Kombinatorik tetap dapat menyelesaikan permasalahan ini jauh lebih cepat dibandingkan dengan Dynamic

Programming.

20. Jawaban : C

Expected Difficulty : Medium (Tricky)

Hint 1 : Anda dapat menyelesaikan permasalahan ini dengan memahami deret ∑N (N, ) atau i=0C i = 2

N

dengan mengamati pola pada Segitiga Pascal.

Hint 2 : Perhatikan kalimat “...ia berniat untuk mengirim sebuah armada kapal berisi ​beberapa kapalnya untuk berperang.” bahwa sebuah armada tidak boleh kosong/tidak memiliki kapal.

21. Jawaban : C

Expected Difficulty : Easy

Hint : Solusi sesungguhnya pada problem ini adalah Dynamic Programming, tetapi akan memakan waktu yang cukup banyak untuk mensimulasikan Dynamic Programming yang ada. Cara yang paling cepat adalah dengan mencoba-coba kemungkinan-kemungkinan yang dirasa akan menghasilkan hasil yang lebih murah.

22. Jawaban : A

Expected Difficulty : Easy

Hint : Sama dengan soal sebelumnya.

23. Jawaban : D

Expected Difficulty : Easy

Hint : Perhatikan bahwa setiap Kuda bergerak, warna (hitam putih pada papan) akan selalu berganti.

24. Jawaban : E

Expected Difficulty : Easy

Hint : Sama dengan soal sebelumnya.

25. Jawaban : E

Expected Difficulty : Easy

(4)

26. Jawaban : D

Expected Difficulty : Easy Hint : Tidak ada.

27. Jawaban : D

Expected Difficulty : Easy Hint : Tidak ada.

28. Jawaban : E

Expected Difficulty : Medium

Hint : Perhatikan kaitan antara sifat bilangan habis dibagi 9 dengan jumlah digit-digit penyusun suatu bilangan. Hal ini menyebabkan setelah 1x proses tersebut dilakukan, bilangan yang dihasilkan pasti habis dibagi 9.

29. Jawaban : D

Expected Difficulty : Easy

Hint : Pelajari permasalahan Minimum Spanning Tree dengan algoritma Kruskall.

30. Jawaban : B

Expected Difficulty : Easy

Hint : Pelajari permasalahan Traveling Salesman dan solusinya menggunakan Dynamic

Programming. Tetapi karena mensimulasikan Dynamic Programming dari permasalahan ini akan memakan waktu banyak, akan lebih cepat apabila dicoba-coba semua kemungkinan yang memungkinkan menghasilkan jawaban yang seminimum mungkin.

31. Jawaban : B

Expected Difficulty : Easy Hint : Tidak ada.

32. Jawaban : B

Expected Difficulty : Medium (Tricky)

Hint : Perhatikan bahwa di soal hanya dicantumkan orang-orang tertentu “berjejeran”, tetapi siapa yang di baris kiri dan siapa yang di baris kanan tidak diketahui.

33. Jawaban : E

Expected Difficulty : Easy Hint : Tidak ada.

34. Jawaban : D

Expected Difficulty : Easy

Hint 1 : Anda akan mendapatkan faktor positif dari 100 dengan mudah, kemudian mengkalikan semua faktor itu dan mendapatkan jawabannya.

Hint 2 : Anda dapat menggunakan rumus banyak faktor, kemudian jawaban dari permasalahan ini adalah 100Xdengan X adalah pembulatan ke atas dari banyak faktor dibagi dengan 2.

35. Jawaban : E

(5)

Hint : Gunakan rumus deret ∑N .. N(N ) dan i=1i= 1 + 2 + 3 + . +N= 2

1 + 1

kemudian menggunakan pertidaksamaan untuk

.. N(N )(2N )

N i=1i

2= 12+ 22+ 32+ . +N2= 6

1 + 1 + 1

menyelesaikan permasalahan yang ada.

36. Jawaban : D

Expected Difficulty : Hard

Hint 1 : Untuk mempermudah perhitungan, hitung secara Bottom Up (dari Base case hingga ke Jawaban yang ada) yang nantinya akan ditemukan sebuah pola.

Hint 2 : Apabila dianalisa lebih lanjut, program tersebut mencari nilai dari 1 + 2 + 3 + . +.. N dalam kompleksitas O(log N) menggunakan Divide & Conquer.

37. Jawaban : A

Expected Difficulty : Medium

Hint : Analisa satu per satu, kegunaan dari masing-masing fungsi, dari AAA hingga DDD. Cara tersebut akan lebih mudah dibandingkan mengerjakan langsung di DDD tanpa mengetahui fungsi dari AAA hingga CCC.

38. Jawaban : C

Expected Difficulty : Medium

Hint 1 : Apabila Anda sudah mengetahui kegunaan dari AAA hingga DDD (dari nomor

sebelumnya), Anda dapat menganalisa fungsi dari EEE dengan mudah dan mengetahui secara langsung bahwa fungsi tersebut adalah Algoritma Euclidean. Pelajari lebih lanjut mengenai algoritma tersebut.

Hint 2 : Hingga nomor ini, seharusnya Anda sudah dapat mengidentifikasi bahwa parameter ketiga dari setiap fungsi tidak digunakan sama sekali.

39. Jawaban : A

Expected Difficulty : Medium

Hint : Sama dengan soal sebelumnya.

40. Jawaban : D

Expected Difficulty : Medium

Hint : Setelah mengetahui kegunaan dari fungsi AAA hingga EEE, Anda dapat menganalisa apa yang sebenarnya dioutputkan dari program tersebut adalah banyaknya bilangan yang relatif prima dengan n. Gunakan Euler’s Totient Function untuk menyelesaikan permasalahan ini.

41. Jawaban : A

Expected Difficulty : Medium

Hint : Sama dengan soal sebelumnya.

42. Jawaban : C

Expected Difficulty : Easy

(6)

proses terlebih dahulu menggunakan rekursi, kemudian juga dengan bagian kanan. Kemudian hasilnya dijumlahkan.

43. Jawaban : C

Expected Difficulty : Easy

Hint : Sama dengan soal sebelumnya, hanya dirubah menjadi kali.

44. Jawaban : C

Expected Difficulty : Hard(est)

Hint : Perhatikan bahwa hasil dari poi(bb,dd) bukanlah bb bb− ( + 1 − ( + 2 − . −) bb ) .. dd.

Solusi 1 : Cara termudah untuk menyelesaikan soal ini adalah dengan menghitung secara Bottom Up. Pertama-tama, perhatikan bahwa perubahan tanda kurang dan tambah dipengaruhi oleh banyaknya bilangan di antara bb dan dd. Asumsikan fungsi tersebut kita ubah menjadi f(x) dimana

(banyaknya bilangan diantara bb dan dd). Kemudian akan terdapat 3 kemungkinan

d b

x=db + 1

jawaban, yaitu konstanta (yang tidak perlu kita ketahui nilainya), variabel (dipengaruhi oleh nilai bb dan dd, karena kita hanya menghitung berdasarkan x), dan konstanta nol. Apabila kita hitung secara Bottom Up, akan didapatkan sebagai berikut :

● f(1) akan mengembalikan suatu variabel (tergantung dari nilai bb dan dd)

● f(2)=f(1)-f(1) akan mengembalikan suatu konstanta (karena pengurangan dari 2 buah variabel berbeda dengan perlakuan fungsi sejenis/memiliki jangkauan yang sama.) ● f(3)=f(2)-f(1) akan mengembalikan suatu variabel (karena pengurangan dari variabel dan

konstanta)

● f(4)=f(2)-f(2) akan mengembalikan nilai 0 (karena pengurangan dari konstanta yang sama) ● f(5)=f(3)-f(2) akan mengembalikan suatu variabel (karena pengurangan dari variabel dan

konstanta)

Lakukan proses itu hingga ditemukan pola bahwa untuk setiap x dengan nilai habis dibagi 4, maka akan mengembalikan nilai 0. Karena banyaknya bilangan dari 2 hingga 2017 adalah 2016

(2017-2+1), maka output dari program tersebut adalah 0. (Solusi tersebut dibuat oleh ​Christopher Samuel

​ dan sudah dibuktikan oleh ​Kwee Lung Sin

menggunakan Induksi Matematika, bahwa pola tersebut akan berlangsung dengan pasti. Terima kasih kepada mereka berdua atas solusi yang lebih mudah dari solusi penulis).

Solusi 2 : Anda dapat menyelesaikan permasalahan ini dengan menghitung secara Top Down. Mula-mula kita simulasikan poi(2, 017)2 =poi(2, 009)1 −poi(1010, 017)2 . Perhatikan bahwa keduanya akan memiliki perlakuan yang sama di dalam fungsi (karena memiliki jangkauan yang sama), sehingga hasil dari pengurangan tersebut mungkin mengembalikan nilai negatif atau nol (tidak mungkin positif).

Karena masih belum mendapatkan jawaban, kita lakukan simulasi fungsi tersebut satu kali lagi, dan kita dapatkan poi(2, 05)5 −poi(506, 009)1 −poi(1010, 518)1 +poi(1519, 017)2 dan perhatikan kembali bahwa keempat fungsi tersebut memiliki banyak bilangan yang sama di dalamnya, sehingga mereka akan mendapatkan perlakuan fungsi yang sama.

(7)

dan oi(1010, 518) k oi(2, 05)

p 1 = 2 +p 5 poi(1519, 017)2 = 3 +k poi(2, 05)5

oi(2, 017) oi(2, 05) poi(2, 05) ) poi(2, 05) k) poi(2, 05) k)

p 2 =p 5 − ( 5 +k − ( 5 + 2 + ( 5 + 3

oi(2, 017) k k

p 2 = 3 −k− 2 = 0

45. Jawaban : D

Expected Difficulty : Medium

Hint : Untuk menyederhanakan perhitungan, kita dapat gunakan Bottom Up.

46. Jawaban : B

Expected Difficulty : Easy

Hint : Apabila a div c = c, berarti a = c*c.

47. Jawaban : A

Expected Difficulty : Easy

Hint : Sama dengan soal sebelumnya.

48. Jawaban : B

Expected Difficulty : Medium/Hard

Hint : Fungsi kuro(x,y) akan mengembalikan nilai maksimum dari x dan y. Sedangkan untuk menganalisa fungsi shiro(x,y), apabila Anda terbiasa dalam mengerjakan soal Dynamic Programming, maka Anda dapat melihat fungsi tersebut mirip dengan Longest Common Subsequence.

49. Jawaban : D

Expected Difficulty : Medium/Hard Hint : Sama dengan soal sebelumnya.

Soal sejenis nomor 48-49 menunjukkan pentingnya berlatih programming & competitive

programming dalam mengerjakan soal OSK dan OSP. Selain membantu kita untuk mengetahui algoritma yang ada pada soal di bagian algoritmika, juga menjadi latihan yang baik untuk mempersiapkan OSN. Selamat berlatih di :

https://training.ia-toki.org/training/curriculums/1/courses

50. Jawaban : A

Expected Difficulty : Easy

Referensi