SPOJ LCM Sum(Hard) 欧拉函数 + 换枚举对象

       求 ∑ i = 1 n L C M ( i , n ) , ( 1 ≤ n ≤ 1 e 18 ) \sum_{i=1}^nLCM(i,n),(1\le n\le 1e18) i=1nLCM(i,n),(1n1e18)

       事先声明,这是一个假题,因为题目的数据是假的。。。之前写的版本暴力是求欧拉函数,竟然都没超时。。。(如果这道题数据加入 n = p ∗ p n=p*p n=pp p p p 是接近 1 e 9 1e9 1e9 的大质数),估计就能卡掉这道题的大部分 A C AC AC 解(暴力求欧拉函数的那种)。。。假设你说你弄了个判断 n n n 开方后是否为质数。那我还可以通过 n = p 1 ∗ p 1 ∗ p 2 n=p_1*p_1*p_2 n=p1p1p2 p 1 p_1 p1 是接近 1 e 9 1e9 1e9 的大质数, p 2 p_2 p2 是个小质数)来卡你,你最坏时间复杂度还是 T n T\sqrt{n} Tn 。。。类似的)

       但是即便是这样,这个题也有可取之处,我们就假装它有着所有极限数据。

       首先 n n n 很大,需要用到 P o l l a r d ’ s r h o Pollard’s rho Pollardsrho 大整数质因子分解,这个没什么好说的。

       那么 ∑ i = 1 n L C M ( i , n ) \sum_{i=1}^nLCM(i,n) i=1nLCM(i,n) n n n 的因子的关系是什么呢?我们推导一波式子。

∑ i = 1 n L C M ( i , n ) = ∑ i = 1 n i ∗ n gcd ⁡ ( i , n ) = n ∗ ∑ i = 1 n i gcd ⁡ ( i , n ) = n ∗ ∑ d ∣ n ∑ i = 1 n d i ∗ [ gcd ⁡ ( i , n d ) = 1 ]      ( i 与 n 的 gcd ⁡ = d ) = n ∗ ∑ d ∣ n ∑ i = 1 d i ∗ [ gcd ⁡ ( i , d ) = 1 ]     ( n d 和 d 都 是 n 的 因 子 , 更 换 枚 举 顺 序 答 案 不 变 ) = n ∗ ∑ d ∣ n d ∗ φ ( d ) 2 = n 2 ∗ ∑ d ∣ n d ∗ φ ( d ) \begin{aligned}\sum_{i=1}^nLCM(i,n)&=\sum_{i=1}^n\frac{i*n}{\gcd(i,n)}\\&=n*\sum_{i=1}^n\frac{i}{\gcd(i,n)}\\&=n*\sum_{d|n}\sum_{i=1}^{\frac{n}{d}}i*[\gcd(i,\frac{n}{d})=1]\ \ \ \ (i 与 n 的\gcd=d)\\&=n*\sum_{d|n}\sum_{i=1}^{d}i*[\gcd(i,d)=1]\ \ \ (\frac{n}{d} 和 d 都是 n 的因子,更换枚举顺序答案不变)\\&=n*\sum_{d|n}\frac{d*\varphi(d)}{2}\\&=\frac{n}{2}*\sum_{d|n}d*\varphi(d)\end{aligned} i=1nLCM(i,n)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值