• BZOJ 4804: 欧拉心算


    Description

    求(sum_{i=1}^nsum_{i=1}^nvarphi(gcd(i,j)),Tleqslant 5 imes 10^3,nleqslant 10^7)

    Solution

    数论分块+莫比乌斯反演.

    化式子

    (sum_{i=1}^nsum_{i=1}^nvarphi(gcd(i,j)))
    (=sum_dvarphi(d)sum_{i=1}^nsum_{j=1}^n[(i,j)=d])
    (=sum_dvarphi(d)(sum_{i=1}^{lfloor frac{n}{d} floor}sum_{j=1}^{lfloor frac{n}{d} floor}[(i,j)=1]))
    (=sum_dvarphi(d)(sum_{p}mu(p)sum_{i=1}^{lfloor frac{n}{pd} floor}sum_{j=1}^{lfloor frac{n}{pd} floor}))
    ( ext{Let T=pd})
    (=sum_{T}lfloor frac{n}{T} floorlfloor frac{n}{T} floorsum_{p}mu(p)varphi(frac{T}{p}))

    因为积性函数的狄利克雷前缀和也是积性函数,并且因为(mu)的存在这个式子还是很好筛的.

    Code

    /**************************************************************
        Problem: 4804
        User: BeiYu
        Language: C++
        Result: Accepted
        Time:4272 ms
        Memory:128240 kb
    ****************************************************************/
     
    #include <bits/stdc++.h>
    using namespace std;
     
    typedef long long LL;
    const int N = 10000050;
     
    int pr[N],cp;
    bool b[N];
    LL f[N];
     
    void pre() {
        f[1]=1;
        for(int i=2;i<N;i++) {
            if(!b[i]) pr[++cp]=i,f[i]=i-2;
            for(int j=1;j<=cp && (LL)i*pr[j]<N;j++) {
                b[i*pr[j]]=1;
                if(i%pr[j]) f[i*pr[j]]=f[i]*f[pr[j]];
                else {
                    if(i/pr[j]%pr[j]) f[i*pr[j]]=f[i/pr[j]]*(pr[j]-1)*(pr[j]-1);
                    else f[i*pr[j]]=f[i]*pr[j];
                    break;
                }
            }
        }for(int i=2;i<N;i++) f[i]+=f[i-1];
    }
    int T,n;
    int main() {
        pre();
        for(scanf("%d",&T);T--;) {
            scanf("%d",&n);
            LL ans=0;
            for(int i=1,j;i<=n;i=j+1) {
                j=n/(n/i);
                ans+=1LL*(n/i)*(n/i)*(f[j]-f[i-1]);
            }printf("%lld
    ",ans);
        }
        return 0;
    }
    

      

  • 相关阅读:
    [剑指offer] 42. 和为S的两个数字
    [剑指offer] 41. 和为S的连续正数序列
    datagridview bindingsource刷新数据
    datagridview bindingsource
    slot-具名插槽
    基于uniapp的ui库
    组件之间通讯
    vue实现word或pdf文档导出的功能
    Vue之富文本tinymce爬坑录
    12道vue高频原理面试题,你能答出几道?
  • 原文地址:https://www.cnblogs.com/beiyuoi/p/6721189.html
Copyright © 2020-2023  润新知