[51NOD1847]奇怪的数学题(杜教筛+min_25筛+第二类斯特林数)
f(x)f(x)f(x)表示xxx的次大約數,有f(x)=xx的最小質因數f(x)=\frac{x}{x的最小質因數}f(x)=x的最小質因數x?,那么
∑i=1n∑j=1nsgcd(i,j)k=∑i=1n∑j=1nf(gcd(i,j))k=∑d=1nf(d)k∑i=1n∑j=1n[gcd(i,j)=d]=∑d=1nf(d)k∑i=1?nd?∑j=1?nd?[gcd(i,j)=1]=∑d=1nf(d)k?(2∑i=1?nd?φ(i)?1)\begin{aligned} \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}sgcd(i,j)^k&=\sum\limits_{i=1}^n\sum\limits_{j=1}^{n}f(gcd(i,j))^k\\ &=\sum\limits_{d=1}^{n}f(d)^k\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}[gcd(i,j)=d]\\ &=\sum\limits_{d=1}^{n}f(d)^k\sum\limits_{i=1}^{\lfloor \frac{n}ze8trgl8bvbq\rfloor}\sum\limits_{j=1}^{\lfloor \frac{n}ze8trgl8bvbq\rfloor}[gcd(i,j)=1]\\ &=\sum\limits_{d=1}^{n}f(d)^k\cdot(2\sum\limits_{i=1}^{\lfloor \frac{n}ze8trgl8bvbq\rfloor}\varphi(i)-1) \end{aligned}i=1∑n?j=1∑n?sgcd(i,j)k?=i=1∑n?j=1∑n?f(gcd(i,j))k=d=1∑n?f(d)ki=1∑n?j=1∑n?[gcd(i,j)=d]=d=1∑n?f(d)ki=1∑?dn???j=1∑?dn???[gcd(i,j)=1]=d=1∑n?f(d)k?(2i=1∑?dn???φ(i)?1)?
(倒數第二步到最后一步是直接由???的定義得到的)
2∑i=1?nd?φ(i)?12\sum\limits_{i=1}^{\lfloor \frac{n}ze8trgl8bvbq\rfloor}\varphi(i)-12i=1∑?dn???φ(i)?1是經典的杜教篩求歐拉函數前綴和,
然后因為iii的上界是?nd?\lfloor\frac{n}ze8trgl8bvbq\rfloor?dn??所以求出前綴和以后分塊搞一波就好了
∑d=1nf(d)k\sum\limits_{d=1}^{n}f(d)^kd=1∑n?f(d)k的求法則非常神仙(%%%網上的大佬):
∑d=1nf(d)k\sum\limits_{d=1}^{n}f(d)^kd=1∑n?f(d)k
=∑d=2nf(d)k[d是質數]+∑d=2nf(d)k[d是合數]+f(1)k=\sum\limits_{d=2}^{n}f(d)^k[d是質數]+\sum\limits_{d=2}^{n}f(d)^k[d是合數]+f(1)^k=d=2∑n?f(d)k[d是質數]+d=2∑n?f(d)k[d是合數]+f(1)k
=∑d=2n[d是質數]+∑d=2n(dd的最小質因數)k[d是合數]=\sum\limits_{d=2}^{n}[d是質數]+\sum\limits_{d=2}^{n}(\fracze8trgl8bvbq{d的最小質因數})^k[d是合數]=d=2∑n?[d是質數]+d=2∑n?(d的最小質因數d?)k[d是合數]
∑d=2n[d是質數]\sum\limits_{d=2}^{n}[d是質數]d=2∑n?[d是質數]即為nnn以內質數個數,可以用min_25篩出來,接下來只需考慮ddd是合數的部分
回憶min_25篩,
設g(n,j)=∑i=1nik[i∈Pori的最小質因數>Pj]g(n,j)=\sum_{i=1}^ni^k[i\in P\ \ or \ \ i的最小質因數>P_j ]g(n,j)=∑i=1n?ik[i∈P??or??i的最小質因數>Pj?],則
當Pj2≤nP_j^2\leq nPj2?≤n時,
g(n,j)=g(n,j?1)?∑[i的最小質因數=Pj]ikg(n,j)=g(n,j-1)-\sum[i的最小質因數=P_j]i^kg(n,j)=g(n,j?1)?∑[i的最小質因數=Pj?]ik
=g(n,j?1)?Pjk∑[i的最小質因數=Pj](iPj)k=g(n,j-1)-P_j^k\sum[i的最小質因數=P_j](\frac{i}{P_j})^k=g(n,j?1)?Pjk?∑[i的最小質因數=Pj?](Pj?i?)k
=g(n,j?1)?Pjk∑l=Pj?nPj?[l的最小質因數>Pj?1]lk=g(n,j-1)-P_j^k\sum_{l=P_j}^{\lfloor\frac{n}{P_j}\rfloor}[l的最小質因數>P_{j-1}]l^k=g(n,j?1)?Pjk?∑l=Pj??Pj?n???[l的最小質因數>Pj?1?]lk
=g(n,j?1)?Pjk[g(?nPj?,j?1)?g(Pj?1,j?1)]=g(n,j-1)-P_j^k[g(\lfloor\frac{n}{P_j}\rfloor,j-1)-g(P_j-1,j-1)]=g(n,j?1)?Pjk?[g(?Pj?n??,j?1)?g(Pj??1,j?1)]
我們發現g(?nPj?,j?1)?g(Pj?1,j?1)g(\lfloor\frac{n}{P_j}\rfloor,j-1)-g(P_j-1,j-1)g(?Pj?n??,j?1)?g(Pj??1,j?1)
即為∑i=1n[i的最小質因數=Pj](iPj)k\sum_{i=1}^{n}[i的最小質因數=P_j](\frac{i}{P_j})^k∑i=1n?[i的最小質因數=Pj?](Pj?i?)k
所以∑j=1∣P∣g(?nPj?,j?1)?g(Pj?1,j?1)\sum_{j=1}^{|P|}g(\lfloor\frac{n}{P_j}\rfloor,j-1)-g(P_j-1,j-1)∑j=1∣P∣?g(?Pj?n??,j?1)?g(Pj??1,j?1)
=∑j=1∣P∣∑i=1n[i的最小質因數=Pj](iPj)k=\sum_{j=1}^{|P|}\sum_{i=1}^{n}[i的最小質因數=P_j](\frac{i}{P_j})^k=∑j=1∣P∣?∑i=1n?[i的最小質因數=Pj?](Pj?i?)k
=∑i=2n(ii的最小質因數)k=\sum_{i=2}^{n}(\frac{i}{i的最小質因數})^k=∑i=2n?(i的最小質因數i?)k
最后,算g(n,0)g(n,0)g(n,0)要快速求∑i=1nik\sum_{i=1}^{n}i^k∑i=1n?ik,這里要用第二類斯特林數處理一下:
∑i=1nik\sum_{i=1}^{n}i^k∑i=1n?ik
=∑i=1n∑j=1k{jk}ij ̄=\sum_{i=1}^{n}\sum_{j=1}^{k}\{_j^k\}i^{\underline{j}}=∑i=1n?∑j=1k?{jk?}ij?
=∑j=1k{jk}∑i=1nij ̄=\sum_{j=1}^{k}\{_j^k\}\sum_{i=1}^{n}i^{\underline j}=∑j=1k?{jk?}∑i=1n?ij?
=∑j=1k{jk}(n+1)j+1 ̄j+1=\sum_{j=1}^{k}\{_j^k\}\frac{(n+1)^{\underline{j+1}}}{j+1}=∑j=1k?{jk?}j+1(n+1)j+1??
實現細節:
1、取模的話可以自然溢出,unsignedintunsigned\ intunsigned?int了解一下ovo
2、求下降階乘冪的時候,因為這題的模數不是質數,所以不能快樂求逆元,但是因為kkk比較小所以直接暴力一波,一個一個數乘,這堆數中必定有一個是j+1j+1j+1的倍數,所以可以直接先除再乘就好了,注意判斷的時候每次都取模判斷的話會愉快T掉,所以應該在一開始的時候先把余數算出來,然后根據余數的加法定理直接判就好了
參考博客:https://www.cnblogs.com/yoyoball/p/9204846.html
總結
以上是生活随笔為你收集整理的[51NOD1847]奇怪的数学题(杜教筛+min_25筛+第二类斯特林数)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为打击盗版,索尼 PS5 轻薄版加装光驱
- 下一篇: 概率与期望技巧随记