#12501: 解題心得


a5083 (assassin刺客大師)

學校 : 新北市立板橋高級中學
編號 : 28347
來源 : [140.116.138.99]
最後登入時間 :
2017-06-27 17:13:56
d439. 11226 - Reaching the fix-point. -- UVa11226 | From: [140.116.92.38] | 發表日期 : 2017-08-01 19:35

這一題我是先建立質數表

並找出1~800中有哪些質數,並放在prime陣列中

 

然後再對2~500000找他的sopf值

我們可用剛剛prime陣列中的質數,來對其做質因數分解,並將結果相加,即可求得sopf值

我們不用擔心1~800的質數不夠用來做質因數分解

ex 以334142為例

    334142的質數有2,所以334142/2 = 167071

    接下來1~800的質數中沒有質數可以再整除167071,所以167071為質數

    故334142 = 2 * 167071

    sopf(334142) = 2 + 167071

 

最後有了2~500000每個數字的sopf值

利用dp(動態規劃)的方法可快速求到每個數的lsopf值

當某數j 其 sopf(j)  = j,則lsopf(j) = 1

否則 sopf(j) = lsopf(sopf(j)) + 1

 

如此就一來找出了 2~500000個數的lsopf值了

 

 

 

 

 

 

 

 
#12502: Re:解題心得


a5083 (assassin刺客大師)

學校 : 新北市立板橋高級中學
編號 : 28347
來源 : [140.116.138.99]
最後登入時間 :
2017-06-27 17:13:56
d439. 11226 - Reaching the fix-point. -- UVa11226 | From: [140.116.92.38] | 發表日期 : 2017-08-01 19:40

這一題我是先建立質數表

並找出1~800中有哪些質數,並放在prime陣列中

 

然後再對2~500000找他的sopf值

我們可用剛剛prime陣列中的質數,來對其做質因數分解,並將結果相加,即可求得sopf值

我們不用擔心1~800的質數不夠用來做質因數分解

ex 以334142為例

    334142的質數有2,所以334142/2 = 167071

    接下來1~800的質數中沒有質數可以再整除167071,所以167071為質數

    故334142 = 2 * 167071

    sopf(334142) = 2 + 167071

 

最後有了2~500000每個數字的sopf值

利用dp(動態規劃)的方法可快速求到每個數的lsopf值

當某數j 其 sopf(j)  = j,則lsopf(j) = 1

否則 sopf(j) = lsopf(sopf(j)) + 1

 

如此就一來找出了 2~500000個數的lsopf值了

 

 

 

 

 

 

 



補充一點

input值n>m時,要將n、m交換喔

 
ZeroJudge Forum