记录编号 174986 评测结果 AAAAAAAAAA
题目名称 [NOIP 2009]Hankson的趣味题 最终得分 100
用户昵称 Gravatar炽烈的爱 是否通过 通过
代码语言 C++ 运行时间 0.114 s
提交时间 2015-08-03 21:08:15 内存使用 0.27 MiB
显示代码纯文本
#include<cstdio>
using  namespace std;
int n,ans;
struct date
{
       int w,shu[100],zhi[100],tot;
}a0,a1,b0,b1;
int aa[100],bb[100];
bool p=1;
int main()
{
	freopen("son.in","r",stdin);
	freopen("son.out","w",stdout);
    scanf("%d",&n);
    for(int	t=1;t<=n;++t)
    {
		p=1;
		scanf("%d%d%d%d",&a0.w,&a1.w,&b0.w,&b1.w);
		int x=2;b1.tot=0;
		while(b1.w>=x*x)
		{
			int len=0;
			while(b1.w%x==0)
			{
				len++;
				b1.w/=x;
			}
			if(len>0)
			{
				b1.shu[++b1.tot]=x;
				b1.zhi[b1.tot]=len;
				//printf("%d    %d     %d\n",b1.tot,b1.shu[b1.tot],b1.zhi[b1.tot]);
			}
			++x;
		}
		if(b1.w!=1)
		{
			b1.shu[++b1.tot]=b1.w;
			b1.zhi[b1.tot]=1;
			//printf("%d    %d     %d\n",b1.tot,b1.shu[b1.tot],b1.zhi[b1.tot]);
		}
		
		a0.tot=0;
		for(int	t=1;t<=b1.tot;++t)
		{
			int len=0;
			while(a0.w%b1.shu[t]==0)
			{
				len++;
				a0.w/=b1.shu[t];
			}
			a0.shu[++a0.tot]=b1.shu[t];
			a0.zhi[a0.tot]=len;
			//printf("%d    %d     %d\n",a0.tot,a0.shu[a0.tot],a0.zhi[a0.tot]);
		}
		
		a1.tot=0;
		for(int	t=1;t<=b1.tot;++t)
		{
			int len=0;
			while(a1.w%b1.shu[t]==0)
			{
				len++;
				a1.w/=b1.shu[t];
			}
			a1.shu[++a1.tot]=b1.shu[t];
			a1.zhi[a1.tot]=len;
			//printf("%d    %d     %d\n",a1.tot,a1.shu[a1.tot],a1.zhi[a1.tot]);
		}
		
		b0.tot=0;
		for(int	t=1;t<=b1.tot;++t)
		{
			int len=0;
			while(b0.w%b1.shu[t]==0)
			{
				len++;
				b0.w/=b1.shu[t];
			}
			b0.shu[++b0.tot]=b1.shu[t];
			b0.zhi[b0.tot]=len;
			//printf("%d    %d     %d\n",b0.tot,b0.shu[b0.tot],b0.zhi[b0.tot]);
		}
		
		for(int	i=1;i<=b1.tot;++i)
		{
			if(b1.zhi[i]<a1.zhi[i])
			{
				p=0;
				break;
			}
			if(a1.zhi[i]<a0.zhi[i]&&b1.zhi[i]>b0.zhi[i]&&b1.zhi[i]>a1.zhi[i])
			{
				p=0;
				break;
			}
			if(a1.zhi[i]<a0.zhi[i]) 
			{
				aa[i]=a1.zhi[i];
				bb[i]=a1.zhi[i];
				continue;
			}
         	if(b1.zhi[i]>b0.zhi[i]) 
			{
					aa[i]=b1.zhi[i];
					bb[i]=b1.zhi[i];
					continue;
			}
         	aa[i]=a1.zhi[i];bb[i]=b1.zhi[i];
		}
		ans=1;
		if(p==0)
			ans=0;
		else
			for(int t=1;t<=b1.tot;++t)
				ans*=(bb[t]-aa[t]+1);
		printf("%d\n",ans);	
	}
	//while(1);
}