• 「Luogu-U18201」分析矿洞


    题目

    没有看懂题目呢说的是什么,但是我们要求的是这个式子

    [Ans=sum_{i=1}^nsum_{j=1}^nvarphi(gcd^2(i,j)) ]

    看起来挺鬼畜的是吧

    老方法枚举(gcd)

    [Ans=sum_{i=1}^nvarphi(i^2)f(left lfloor frac{n}{i} ight floor) ]

    其中

    [f(d)=sum_{i=1}^{left lfloor frac{n}{d} ight floor}sum_{j=1}^{left lfloor frac{n}{d} ight floor}[(i,j)=1] ]

    非常显然的是

    [f(d)=2 imes sum_{i=1}^dvarphi(i) -1 ]

    于是可以考虑对(f(left lfloor frac{n}{i} ight floor))分块

    所以我们需要的是(varphi(i^2))的前缀和

    还有一个非常显然的东西就是

    [varphi(i^2)=ivarphi(i) ]

    考虑(varphi)的公式

    (n)

    [n=prodlimits_{i=1}^{N}p_{i}^{r_{i}} ]

    [varphi(n)=prodlimits_{i=1}^{N}(p_i-1)p_i^{r_i-1} ]

    [varphi(n^2)=prodlimits_{i=1}^{N}(p_i-1)p_i^{2r_i-1}=prodlimits_{i=1}^{N}(p_i-1)p_i^{r_i-1}p_i^{r_i} ]

    [=prodlimits_{i=1}^{N}(p_i-1)p_i^{r_i-1} imes prodlimits_{i=1}^{N}p_{i}^{r_{i}}=varphi(n) imes n ]

    于是设

    [F(i)=ivarphi(i) ]

    于是

    [Ans=sum_{i=1}^nf(left lfloor frac{n}{i} ight floor)F(i) ]

    (F)函数的前缀和即可

    由于数据范围很大,考虑杜教筛

    根据一番暴力枚举我们应该让(F)(id)卷一下

    [(F imes id)(i)=sum_{d|i}dvarphi(d)frac{i}{d} ]

    [=isum_{d|i}varphi(d)=i^2 ]

    拿出杜教筛套路

    [S(n)=sum_{i=1}^n(F imes id)(i)-sum_{i=2}^nid(i)S(left lfloor frac{n}{i} ight floor) ]

    [=frac{n(n+1)(2n+1)}{6}-sum_{i=2}^nid(i)S(left lfloor frac{n}{i} ight floor) ]

    不就没了吗

    当然(left lfloor frac{n}{i} ight floor)也会很大,所以还要杜教筛一个欧拉函数

    代码

    怎么可能有

  • 相关阅读:
    第11次作业
    第十次实验
    第九次作业
    第八次实验
    第七次作业
    第六次作业
    作业
    JAVA实验三
    JAVA实验二
    JAVA实验一
  • 原文地址:https://www.cnblogs.com/asuldb/p/10339533.html
Copyright © 2020-2023  润新知