记录编号 220527 评测结果 AAAAAAAAAA
题目名称 [HAOI 2011]问题B 最终得分 100
用户昵称 Gravatar/k 是否通过 通过
代码语言 C++ 运行时间 4.470 s
提交时间 2016-01-18 20:30:36 内存使用 0.93 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int sum[50010];
int mu[50010];
bool b[50010];
int q[50010],w;
int aa,bb,cc,dd,kk;
inline void gycl()
{
	mu[1]=1;
	for(int i=2;i<=50000;i++)
	{
		if(!b[i])
		{
			q[++w]=i;
			mu[i]=-1;
		}
		for(int j=1;i*q[j]<=50000&&j<=w;j++)
		{
			b[q[j]*i]=1;
			if(i%q[j]==0)
			{
				mu[i*q[j]]=0;
				break;
			}
			mu[i*q[j]]=-mu[i];
		}
	}
	for(int i=1;i<=50000;i++)		
		sum[i]=sum[i-1]+mu[i];
}
inline int g(int m,int n)
{
	if(n>m)
		swap(m,n);
	int ls=0;
	int re=0;
	for(int i=1;i<=n;i=ls+1)
	{
		ls=min(n/(n/i),m/(m/i));
		re+=(n/i)*(m/i)*(sum[ls]-sum[i-1]);
	}
	return re;
}
inline void gmain()
{
	scanf("%d%d%d%d%d",&aa,&bb,&cc,&dd,&kk);
	printf("%d\n",g(dd/kk,bb/kk)-g((aa-1)/kk,dd/kk)-g(bb/kk,(cc-1)/kk)+g((aa-1)/kk,(cc-1)/kk));
}
int main()
{
	freopen("b.in","r",stdin);
	freopen("b.out","w",stdout);
	int n;
	gycl();
	scanf("%d",&n);
	while(n--)
		gmain();
}