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