P3961zMy的lcm
问题描述
首先注意到,题目中的异或是不存在的,因为出题人懒得写高精度异或。
先推导一番
$$
Ans=\sum_{i=1}^{n}lcm(n,i)=n\sum_{i=1}^{n}\frac{i}{gcd(n,i)}=n\sum_{d|n}\sum_{i=1}^{n}\frac{i}{d}[gcd(n,i)==d]=n\sum_{d|n}\sum_{i=1}^{\frac{n}{d}}i[gcd(\frac{n}{d},i)==1]
$$
这里用到一个公式,$\sum_{i=1}^{n}i[gcd(n,i)==1]=\frac{n\varphi(n)}{2}$
关于证明,考虑到如果$gcd(i,n)=1$,那么$gcd(n-i,n)=1$,由此得证。
因此
$$
Ans=\frac{n}{2}\sum_{d|n}\frac{n}{d}\varphi(\frac{n}{d})=\frac{n}{2}\sum_{d|n}d\varphi(d),令f(n)=\sum_{d|n}d\varphi(d)
$$
考虑如何求$f(n)$,观察发现,$f(n)$可能是积性函数,尝试证明一下。
$$
f(a)=\sum_{i|a}i\varphi(i),f(b)=\sum_{j|b}j\varphi(j),gcd(a,b)=1
$$
$$
那么显然f(ab)=\sum_{i|a}\sum_{j|b}ij\varphi(ij)=\sum_{i|a}\sum_{j|b}ij\varphi(i)\varphi(j)=\sum_{i|a}i\varphi(i)\sum_{j|b}j\varphi(j)=f(a)f(b)
$$
因此可以分解质因数后求$f(n)$,只需要考虑求$f(p^k)$,推导一下容易发现$f(p^k)=\frac{p^{2k}-1}{p+1}p+1$
因此只需要用$Pollard\ Rho$求质因数分解,然后高精度算一算就行了。
总复杂度$O(Tn^{\frac{1}{4}}+高精度复杂度)$
代码:
1 |
|