码迷,mamicode.com
首页 > 其他好文 > 详细

BZOJ 2820: YY的GCD | 数论

时间:2018-01-04 19:21:03      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:swa   lld   oid   style   void   题解   namespace   bool   int   

题目:

 


题解:

#include<cstdio>
#include<algorithm>
#define N 10000005
typedef long long ll;
using namespace std;
int T,n,m,cnt;
bool mark[N];
int pri[N],mu[N];
ll f[N];
void getphi()
{
    mu[1]=1;
    for (int i=2;i<N;i++)
    {
    if (!mark[i]) pri[++cnt]=i,mu[i]=-1;
    for (int j=1;j<=cnt && pri[j]*i<N;j++)
    {
        mark[i*pri[j]]=1;
        if (i%pri[j]==0)
        {mu[i*pri[j]]=0;break;}
        else mu[i*pri[j]]=-mu[i];
    }
    }
    for (int i=1;i<=cnt;i++)
    {
    int p=pri[i];
    for (int j=1;j*p<N;j++)
        f[j*p]+=mu[j];
    }
    for (int i=1;i<N;i++) f[i]+=f[i-1];
}
int main()
{
    getphi();
    scanf("%d",&T);
    while (T--)
    {
    ll ans=0;
    scanf("%d%d",&n,&m);
    if (n>m) swap(n,m);
    for (int i=1,j;i<=n;i=j+1)
    {
        j=min(n/(n/i),m/(m/i));
        ans+=(f[j]-f[i-1])*(n/i)*(m/i);
    }
    printf("%lld\n",ans);
    }
    return 0;
}

 

BZOJ 2820: YY的GCD | 数论

标签:swa   lld   oid   style   void   题解   namespace   bool   int   

原文地址:https://www.cnblogs.com/mrsheep/p/8194792.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!