• BZOJ 4174 tty的求助 莫比乌斯反演


    题目大意:求Nn=1Mm=1m1k=0nk+xm mod 998244353

    如果nm都已经确定了。如今要求这坨玩应:
    m1k=0nk+xm
    =m1k=0(nk%m+xm+nknk%mm)
    =m1k=0(nk%m+xm+nkmnk%mm)

    我们一项一项考虑

    d=gcd(n,m),那么有

    m1k=0nk%m+xm
    =dmd1k=0kd+xm
    =d(mdxx%mm+md1k=0kd+x%mm)
    =d(mdxx%mm+md1k=0[kd+x%mm])
    =d(xx%md+x%md)
    =dxd

    m1k=0nkm=nmm(m1)2=nmn2

    m1k=0nk%mm=dmd1k=0kdm=d2m(md1)md2=md2

    故答案为
    Nn=1Mm=1(dxd+nmn2md2)
    =12Nn=1Mm=1(2dxd+d+nmnm)
    =12(S(N)S(M)S(N)mS(M)n+min(N,M)d=1(d+2dxd)min(Nd,Md)k=1μ(k)NdkMdk)

    当中S(n)=n(n+1)2

    然后O(nlogn)枚举dk就可以

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #define M 500500
    #define MOD 998244353
    using namespace std;
    int n,m,x;
    long long ans;
    int mu[M];
    int prime[M],tot;
    bool not_prime[M];
    void Linear_Shaker()
    {
        int i,j;
        mu[1]=1;
        for(i=2;i<=500000;i++)
        {
            if(!not_prime[i])
            {
                prime[++tot]=i;
                mu[i]=MOD-1;
            }
            for(j=1;prime[j]*i<=500000;j++)
            {
                not_prime[prime[j]*i]=true;
                if(i%prime[j]==0)
                {
                    mu[prime[j]*i]=0;
                    break;
                }
                mu[prime[j]*i]=(MOD-mu[i])%MOD;
            }
        }
    }
    long long Sum(long long n)
    {
        return (n*(n+1)>>1)%MOD;
    }
    int main()
    {
        int i,j;
        cin>>n>>m>>x;
        Linear_Shaker();
        ans=((Sum(n)*Sum(m)-Sum(n)*m-Sum(m)*n)%MOD+MOD)%MOD;
        if(n>m) swap(n,m);
        for(i=1;i<=n;i++)
        {
            long long temp=i+x/i*i*2;
            for(j=1;j*i<=n;j++)
                (ans+=temp*mu[j]%MOD*(n/i/j)%MOD*(m/i/j)%MOD)%=MOD;
        }
        cout<<(ans*(MOD+1>>1)%MOD)<<endl;
        return 0;
    }
  • 相关阅读:
    centos 7修改时间为中国时间
    颜色表及html代码
    前端日志监控体系
    测试开发必备技能:安全测试漏洞靶场实战
    Jmeter(三)----win10系统下如何修改Jmeter字体大小?
    Jmeter(二) ---Jmeter英文版本修改为中文
    Jmeter(一) ---Windows环境搭建
    跟着高手学复盘_初步理解
    小测试对 HTTP/2 的了解
    软件测试入坑建议
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6747451.html
Copyright © 2020-2023  润新知