欧拉计划 P429 (数论)
歐拉計劃 P429 Sum of squares of unitary divisors(數論)
傳送門:https://projecteuler.net/problem=429
題目大意:
定義一個數 n n n 的因數 d d d 為獨立因數,當且僅當 gcd ? ( d , n / d ) = 1 \gcd(d,n/d)=1 gcd(d,n/d)=1 。定義函數 s ( n ) s(n) s(n) 為 n n n 的所有獨立因數的平方和。求 s ( 100000000 ! ) m o d 1000000009 s(100000000!) \bmod 1000000009 s(100000000!)mod1000000009 。
題解:好久沒做過歐拉計劃了。。。沒想到隨手一翻就找到了一道很像acm數論題的題目。。。考慮唯一分解定律, ? n ∈ N , n = p 1 s 1 p 2 s 2 ? p r s r \forall \space n\in N,n=p_1^{s_1}p_2^{s_2}\cdots p_r^{s_r} ??n∈N,n=p1s1??p2s2???prsr?? ,一個因數為獨立因數時,那么這個獨立因數一定可以寫成 p a 1 s a 1 p a 2 s a 2 ? p a k s a k p_{a_1}^{s_{a_1}}p_{a_2}^{s_{a_2}}\cdots p_{a_k}^{s_{a_k}} pa1?sa1???pa2?sa2????pak?sak??? 的形式,那么只要求出所有的 p i s i p_i^{s_i} pisi?? ,再將它們一一組合起來即可。此時存在兩個問題:
(1)如何求出階乘數的所有的 p i s i p_i^{s_i} pisi?? ?
根據定義,一個階乘數
n ! = ∏ i = 1 n i = ∏ i = 1 n p a i 1 s a i 1 p a i 2 s a i 2 ? p a i k s a i k = p 1 ∑ i = 1 n s i 1 p 2 ∑ i = 1 n s i 2 ? p r ∑ i = 1 n s i r n!=\prod\limits_{i=1}^ni=\prod\limits_{i=1}^np_{a_{i1}}^{s_{a_{i1}}}p_{a_{i2}}^{s_{a_{i2}}}\cdots p_{a_{ik}}^{s_{a_{ik}}}=p_1^{\sum\limits_{i=1}^ns_{i1}}p_2^{\sum\limits_{i=1}^ns_{i2}}\cdots p_r^{\sum\limits_{i=1}^ns_{ir}} n!=i=1∏n?i=i=1∏n?pai1?sai1???pai2?sai2????paik?saik???=p1i=1∑n?si1??p2i=1∑n?si2???pri=1∑n?sir??
那么對于一個質數 p p p ,只要求出 ∑ i = 1 ? n p i ? \sum\limits_{i=1}\lfloor\frac{n}{p^i}\rfloor i=1∑??pin?? 作為次方即可。
(2)如何求出所有的組合情況?
對于每個質數次方數 p i s i p_i^{s_i} pisi?? ,都有取或不取兩種情況,此時的組合情況數量為 2 π ( n ) 2^{\pi(n)} 2π(n) , π ( n ) \pi(n) π(n) 為 [ 1 , n ] [1,n] [1,n] 中所有質數的數量。對于這種天文數字,我們是不可能通過暴力求解得出所有的組合情況的,那么應該如何簡化問題?考慮 s ( n ) s(n) s(n) 求的是所有獨立因數的平方和,我們可以通過生成函數的思想去得出答案,作出多項式 ∏ i = 1 ( p i 2 s i + 1 ) \prod\limits_{i=1}(p_i^{2s_i}+1) i=1∏?(pi2si??+1) ,不難發現這東西涵蓋了所有的組合情況,那么這個多項式最后得到的結果就是 s ( n ) s(n) s(n) 的值。此時暴力求這個連乘式就行。
結尾附上AC結果和代碼~
總結
以上是生活随笔為你收集整理的欧拉计划 P429 (数论)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 达人评测 r7 7730U和R5 753
- 下一篇: 达人评测 r7 7840HS和i5 13