Suhendry’s Blog

When in doubt, do math ;-)

BNPCHS 2009 - Final Round

with 8 comments

G - Jumlah Pembagi

Author: Eko Wibowo

Misalnya kita memiliki sebuah bilangan N = 60, pembagi dari 60 adalah: 1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30 dan 60, yang semuanya memiliki faktor prima hanya 2, 3 atau 5, bisa juga ditulis sebagai: 203050, 213050, 203150, 223050, 203051, 213150, 213051, 223150, 203151, 223051, 213151, 223151. Jumlah dari semua bilangan tersebut adalah 203050 + 203051 + 203150 + 203151 + 213050 + 213051 + 213150 + 213151 + 223050 + 223051 + 223150 + 223151, atau bisa ditulis sebagai: (20 + 21 + 22) * (30 + 31) * (50 + 51).

Dari contoh di atas, bisa disimpulkan untuk menghitung jumlah pembagi dari suatu bilangan bulat N bisa dengan memfaktorkan N menjadi p1a1 * p2a2 * … * ptat dimana p adalah faktor prima dari N dan menghitung rumus:

SOD = (p10 + p11 + … + p1a1) * (p20 + p21 + … + p2a2) * … * (pt0 + pt1 + … + ptat)

Masalah berikutnya adalah bagaimana cara menghitung p10 + p11 + … + p1a1 dengan cepat, karena pangkat a bisa mencapai 100,000,000 (batasan input).

Ada (setidaknya) dua cara untuk menyelesaikan masalah ini, yang pertama adalah dengan divide and conquer:

f(a,n) { // menghitung nilai dari a0 + a1 + … + an
if ( n == 0 ) return 1;
if ( n mod 2 == 1) {
x = f(a,n-1);
return x + x * (a - 1) + 1 ;
}
else {
x = f(a,n/2);
return x * (x * (a - 1) + 1) + x;
}
}

Cara kedua adalah dengan menggunakan rekursi yang dimodelkan sebagai matrix

g

di mana elemen (1,1) dari matrix A adalah f(a,n) dan elemen (1,2) adalah an. Di sini teknik divide and conquer kembali digunakan untuk memangkatkan matrix tersebut.




Pages: 1 2 3 4 5 6 7 8 9 10 11 12

Written by suhendry

December 7th, 2009 at 9:52 pm

8 Responses to 'BNPCHS 2009 - Final Round'

Subscribe to comments with RSS

  1. pertamax! :D

    Eko Wibowo

    7 Dec 09 at 11:42 pm

  2. setelah di teliti, 10 problems yang ada, problem authornya beda2 smua :))

    Felix J

    8 Dec 09 at 12:34 am

  3. Argghhhh, problem A dan G ngga akan pernah gw lupain !

    Timotius Sakti

    8 Dec 09 at 12:43 am

  4. Wah soal2nya bagus2 loh…
    Variasinya dan tingkat kesulitannya pas!

    Hore… sekarang tidak ada alasan lagi untuk tidak nge-blog INC/ICPC 09 >:)

    Felix Halim

    8 Dec 09 at 10:56 am

  5. kok blakangan ini write-upnya ngga ada storynya pak? spt write-up HS07 gt… pengen tau behind the scene-nya kayak apa :D

    anyway, soalnya bagus2 & menarik, tapi banyak bgt euy :D

    Angelina Veni

    8 Dec 09 at 10:30 pm

  6. mana?

    mahli

    10 Dec 09 at 4:24 pm

  7. writeup icpc….~ >:)

    Felix J

    11 Dec 09 at 8:20 pm

  8. gan, ada contoh kodingannya g tentang problem dari A-j tu???
    kirimin dong.. thanks

    martin muhar

    14 May 10 at 5:12 pm

Leave a Reply