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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章