bzoj2301

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
#define LL long long
  
LL read()
{
    LL f=1,x=0;
    char ch=getchar();
    for (;ch<'0'||ch>'9';ch=getchar()) f=ch=='-'?-1:1;
    for (;ch>='0'&&ch<='9';ch=getchar()) x*=10,x+=ch-'0';
    return f*x;
}
  
const int N=50010;
int n,cnt,p[N],mu[N],np[N],s[N];

inline LL cal(int a,int b)
{
	LL rec=0;
	for (int i=1,pos;i<=a&&i<=b;i=pos+1)
	{
        pos=min(a/(a/i),b/(b/i));
		rec+=(LL)(s[pos]-s[i-1])*(a/i)*(b/i);
	}
	return rec;
}
  
int main()
{
    mu[1]=1;
    for (int i=2;i<N;i++) 
    {
        if (!np[i]) mu[i]=-1,p[++cnt]=i;
        for (int j=1;j<=cnt&&i*p[j]<N;j++)
        {
            int t=i*p[j];
            np[t]=1;
            if (i%p[j]==0) {mu[t]=0;break;}
            mu[t]=-mu[i];
        }
    }
    for (int i=1;i<N;i++) s[i]=s[i-1]+mu[i];
    n=read();
    while(n--)
    {
        int a=read(),b=read(),c=read(),d=read(),k=read();
		a--;c--;
        b/=k;d/=k;a/=k;c/=k;
		LL ans=cal(b,d)-cal(a,d)-cal(b,c)+cal(a,c);
        printf("%lld\n",ans);
    }
    return 0;
}

发布了52 篇原创文章 · 获赞 0 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览