• BZOJ 3561: DZY Loves Math VI 莫比乌斯反演+复杂度分析


    推到了一个推不下去的形式,然后就不会了 ~ 

    看题解后傻了:我推的是对的,推不下去是因为不需要再推了. 

    复杂度看似很大,但其实是均摊 $O(n)$ 的,看来分析复杂度也是一个能力啊 ~ 

    code: 

    #include <bits/stdc++.h>  
    #define ll long long 
    #define N  500006   
    #define mod 1000000007    
    #define setIO(s) freopen(s".in","r",stdin)      
    using namespace std; 
    int cnt; 
    int mu[N],vis[N],prime[N];   
    int qpow(int x,int y) 
    {
        int tmp=1;  
        while(y) 
        {
            if(y&1) tmp=(ll)tmp*x%mod;  
            x=(ll)x*x%mod; 
            y>>=1; 
        } 
        return tmp; 
    }  
    void Initialize() 
    {   
        int i,j;  
        mu[1]=1; 
        for(i=2;i<N;++i)  
        {
            if(!vis[i]) prime[++cnt]=i,mu[i]=-1; 
            for(j=1;j<=cnt&&prime[j]*i<N;++j) 
            {
                vis[i*prime[j]]=1;   
                if(i%prime[j]) 
                {  
                    mu[i*prime[j]]=-mu[i];   
                } 
                else 
                {
                    mu[i*prime[j]]=0; 
                    break;  
                }
            }
        }
    } 
    int n,m; 
    int a[N],sum[N];    
    int ans=0; 
    int main() 
    {  
        int i,j;  
        // setIO("input");  
        Initialize();   
        scanf("%d%d",&n,&m); 
        if(n>m)   swap(n,m);   
        for(i=1;i<=m;++i)   a[i]=1; 
        for(int d=1;d<=n;++d) 
        {
            for(i=1;i<=m/d;++i) 
            {
                a[i]=(ll)a[i]*i%mod; 
                sum[i]=(ll)(sum[i-1]+a[i])%mod;   
            }  
            int tmp=0;  
            for(int c=1;c<=n/d;++c) 
            {
                tmp=(ll)(tmp+(ll)mu[c]*qpow(c,2*d)%mod*sum[n/d/c]%mod*sum[m/d/c]%mod+mod)%mod;    
            }
            ans=(ll)(ans+(ll)qpow(d,d)*tmp%mod)%mod;   
        }
        printf("%d
    ",ans);  
        return 0; 
    }
    

      

  • 相关阅读:
    施密特触发器
    51单片机独立键盘原理
    51单片机独立键盘原理
    hdu3085 Nightmare Ⅱ
    hdu3085 Nightmare Ⅱ
    复制一颗二叉树
    复制一颗二叉树
    判断一颗二叉树是不是完全二叉树
    判断一颗二叉树是不是完全二叉树
    求二叉树的深度及每一个节点的深度
  • 原文地址:https://www.cnblogs.com/guangheli/p/12056395.html
Copyright © 2020-2023  润新知