• GCD SUM 强大的数论,容斥定理


    GCD SUM

    Time Limit: 8000/4000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others)
    SubmitStatus

    Problem Description

    给出N,M
    执行如下程序:
    long long  ans = 0,ansx = 0,ansy = 0;
    for(int i = 1; i <= N; i ++)
       for(int j = 1; j <= M; j ++)
           if(gcd(i,j) == 1) ans ++,ansx += i,ansy += j;
    cout << ans << " " << ansx << " " << ansy << endl;

    Input

    多组数据,每行两个数N,M(1 <= N,M <= 100000)。

     

    Output

    如题所描述,每行输出3个数,ans,ansx,ansy,空格隔开

    Sample Input

    5 5
    1 3

    Sample Output

    19 55 55
    3 3 6

    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    using namespace std;
    #define MAX 100010
    #define ll long long
    ll mu[MAX]= {0},mb[MAX]= {0};
    void init()
    {
        int i,j;
        for(i=2; i<MAX; i++)
        {
            if(!mu[i])
            {
                mu[i]=i;
                if(i>1000)continue;
                j=i*i;
                while(j<MAX)
                {
                    mu[j]=i;
                    j+=i;
                }
            }
        }
        mu[1]=1;
        for(i=2; i<MAX; i++)
        {
            if((i/mu[i])%mu[i]==0)mu[i]=0;
            else mu[i]=-mu[i/mu[i]];
        }
        for(i=1; i<MAX; i++)
        mb[i]=mu[i]*i,mu[i]+=mu[i-1],mb[i]+=mb[i-1];
    }
    void solve(int n,int m)
    {
        ll ans,ansx,ansy,x,y;
        ans=ansx=ansy=0;
        int i,j,k;
        for(i=(n>m?m:n);i>0;)
        {
            x=n/i,y=m/i;
            k=max(n/(x+1),m/(y+1));
            ans+=x*y*(mu[i]-mu[k]);
            ansx+=(mb[i]-mb[k])*y*(1+x)*x/2;
            ansy+=(mb[i]-mb[k])*x*(1+y)*y/2;
            i=k;
        }
        printf("%lld %lld %lld
    ",ans,ansx,ansy);
    }
    int main()
    {
        init();
        int n,m;
        while(scanf("%d%d",&n,&m)!=EOF)
        {
            solve(n,m);
        }
    }


  • 相关阅读:
    入门OJ 4187【周末舞会】
    入门OJ 1532【排队取款】
    洛谷 P3029 [USACO11NOV]【牛的阵容Cow Lineup】
    洛谷 P1638【逛画展】
    入门OJ 1256【排队】
    PKU 1945【Power Hungry Cows】
    RocketMQ重试机制和消息
    Java操作RocketMQ
    RocketMQ概述
    重定向机制
  • 原文地址:https://www.cnblogs.com/hosealeo/p/4190480.html
Copyright © 2020-2023  润新知