记录编号 133007 评测结果 AAAAAAAAAA
题目名称 [NOIP 2009]Hankson的趣味题 最终得分 100
用户昵称 Gravatar席一鸣 是否通过 通过
代码语言 C++ 运行时间 0.055 s
提交时间 2014-10-26 21:54:21 内存使用 0.50 MiB
显示代码纯文本
#include<cmath>
#include<cstdio>
#include<iostream>
using namespace std;
int p[50000]={0},ia0,ia1,ib0,ib1;
long a0,a1,b0,b1,sum=1,low=0,high=0;
int e(long*a,long p)
{
	int sum=0;
	while(!(*a%p))
	{
		*a/=p;
		sum++;
	}
	return sum;
}
void r(int p)
{
	ia0=e(&a0,p);
	ia1=e(&a1,p);
	ib0=e(&b0,p);
	ib1=e(&b1,p);
	low=ia1;
	if(ib0<ib1)
		low=ib1;
	high=ib1;
	if(ia0>ia1)
		high=ia1;
	if(high>=low)
		sum*=(high-low+1);
	else
		sum=0;
}
main()
{
	freopen("son.in","r",stdin);
	freopen("son.out","w",stdout);
	bool l[50000]={0};
	int i,j,k=0,n,t=223;
	for(i=2;i<50000;i++)
		if(!l[i])
		{
			p[k]=i;
			k++;
			if(i<=t)
				for(j=i*i;j<=50000;j+=i)
					l[j]=1;
		}
	cin>>n;
	while(n--)
	{
		sum=1;
		low=high=0;
		cin>>a0>>a1>>b0>>b1;
		for(i=0;p[i]*p[i]<=b1&&p[i];i++)
			r(p[i]);
		if(b1>1)
			r(b1);
		cout<<sum<<endl;
	}
}