#22805: 解法思路


p3a_owhj (阿普二信)

學校 : 不指定學校
編號 : 39897
來源 : [36.227.79.178]
最後登入時間 :
2024-06-04 22:09:36
b607. Number Partition | From: [118.167.31.3] | 發表日期 : 2020-10-03 14:49

不確定有多少筆資料,但以我的解法 AC/10ms,應該筆數不多吧

==================== 解法 =========== 

篩法建質數表 pr[],因要判定某數是否質數,篩法的記號 c[]留著用

n若是偶數,一定可以分成兩個質數,n/2最接近的奇數 i 往下找 j,n-j 皆質數{3<=j<=i的奇數} 印出2個 j,n-j

n若為奇數:(1) n-2也是質數,則印出 2個 2,n-2

           (2) n-2非質數,切成3個奇數,從最接近 n/3的質數 i往下找所有 j + nj{nj是可以拆成2個質數的偶數}
                又若 n可以拆成三個相等的質數,直接印出,不用跑迴圈

例如 有一筆 999997 拆成三個質數,我的方法是
     i=999997/3往下取奇數 i = 333331 雙迴圈 從j<=i 的質數{質數表往下找},nj=n-j, 內迴圈找所有 k<=nj/2 的質數,
                若 j,k,nj-k皆為質數,算出其乘積 p ,保留最大的 p 及相對應的 j,k,nj-k{我用 ans[3]存}
                輸出時 ans[] 要 sort

================ 這解法 感覺不是很好,筆數一多應該過不了,但試試看就 AC了,不曉得有沒有更好的解法

  

 
#23004: Re:解法思路


ryan40426@apps.ntpc.edu.tw (Foxyy)

學校 : 國立臺灣師範大學附屬高級中學
編號 : 72256
來源 : [140.113.136.220]
最後登入時間 :
2024-05-17 14:58:48
b607. Number Partition | From: [118.150.53.204] | 發表日期 : 2020-10-17 11:53

不確定有多少筆資料,但以我的解法 AC/10ms,應該筆數不多吧

==================== 解法 =========== 

篩法建質數表 pr[],因要判定某數是否質數,篩法的記號 c[]留著用

n若是偶數,一定可以分成兩個質數,n/2最接近的奇數 i 往下找 j,n-j 皆質數{3<=j<=i的奇數} 印出2個 j,n-j

n若為奇數:(1) n-2也是質數,則印出 2個 2,n-2

           (2) n-2非質數,切成3個奇數,從最接近 n/3的質數 i往下找所有 j + nj{nj是可以拆成2個質數的偶數}
                又若 n可以拆成三個相等的質數,直接印出,不用跑迴圈

例如 有一筆 999997 拆成三個質數,我的方法是
     i=999997/3往下取奇數 i = 333331 雙迴圈 從j<=i 的質數{質數表往下找},nj=n-j, 內迴圈找所有 k<=nj/2 的質數,
                若 j,k,nj-k皆為質數,算出其乘積 p ,保留最大的 p 及相對應的 j,k,nj-k{我用 ans[3]存}
                輸出時 ans[] 要 sort

================ 這解法 感覺不是很好,筆數一多應該過不了,但試試看就 AC了,不曉得有沒有更好的解法

  


DP它 :D

 
#31054: Re: 解法思路


jm168.fen@gmail.com (銘芬)

學校 : 不指定學校
編號 : 196588
來源 : [61.230.45.159]
最後登入時間 :
2022-07-17 21:21:08
b607. Number Partition | From: [61.230.13.43] | 發表日期 : 2022-07-08 21:46

不確定有多少筆資料,但以我的解法 AC/10ms,應該筆數不多吧

==================== 解法 =========== 

篩法建質數表 pr[],因要判定某數是否質數,篩法的記號 c[]留著用

n若是偶數,一定可以分成兩個質數,n/2最接近的奇數 i 往下找 j,n-j 皆質數{3<=j<=i的奇數} 印出2個 j,n-j

n若為奇數:(1) n-2也是質數,則印出 2個 2,n-2

           (2) n-2非質數,切成3個奇數,從最接近 n/3的質數 i往下找所有 j + nj{nj是可以拆成2個質數的偶數}
                又若 n可以拆成三個相等的質數,直接印出,不用跑迴圈

例如 有一筆 999997 拆成三個質數,我的方法是
     i=999997/3往下取奇數 i = 333331 雙迴圈 從j<=i 的質數{質數表往下找},nj=n-j, 內迴圈找所有 k<=nj/2 的質數,
                若 j,k,nj-k皆為質數,算出其乘積 p ,保留最大的 p 及相對應的 j,k,nj-k{我用 ans[3]存}
                輸出時 ans[] 要 sort

================ 這解法 感覺不是很好,筆數一多應該過不了,但試試看就 AC了,不曉得有沒有更好的解法

  


DP它 :D

  1. 解題原理可google"哥德巴赫猜想"

  2. 測資約10筆, 較大的有: 999997, 999999, 295117

 

 
ZeroJudge Forum