1. 程式人生 > >51nod 1584 加權約數和

51nod 1584 加權約數和

原題連結.

題解:

必知知識:

σ(n)是n的約數和。
n=pqii
σ(n)=qij=0pji
=pqi+1i1pi1
知道了這個就可以線性篩法了,如有不懂得見code。

必要結論:

σ(ij)=p|iq|jpjq(gcd(p,q)=1)

證明:

p|iq|jpjq(gcd(p,q)=1)
=p|iq|jpq(gcd(p,jq)=1)

對每一個質因子分類討論:

i=puii,j=pvii
p=plii,q=prii

1.若ui>=li>0,則ri=vi,此時可以表示出p(vi+1)>

(ui+vi)i
2.li=0,則vi>=ri>=0,此時可以表示出p0>vii.

於是可以得出pq一定可以表示出每個質因子p0>(ui+vi)i,合起來就包括了所有i*j的所有約數。

σ(ij)=p|iq|jpjq(gcd(p,q)=1)

有了gcd就可以反演了。

Ans=ni=1nj=1σ(ij)max(i,j)
=ni=1nj=1p|iq|jp