记录编号 429953 评测结果 AAAAAAAAAA
题目名称 [NOIP 2009]Hankson的趣味题 最终得分 100
用户昵称 Gravatarswttc 是否通过 通过
代码语言 C++ 运行时间 2.192 s
提交时间 2017-07-28 21:28:44 内存使用 3.37 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#define LL long long

using namespace std;

LL n,p[200010],f[200010],a,aa,b,bb,m,pc;

void shaisu()
{
	for(int i=2;i<=50000;i++)
	{
		if(!f[i])
		{
			p[++pc]=i;
			f[i]=1;
		}
		for(int j=1;j<=pc;j++)
		{	
			if(i*p[j]>50000) break;
			f[p[j]*i]=1;
			if(i%p[j]==0)
			 break;
		}
	}
}

LL fenjie()
{
	LL t=1;
	for(int i=1;i<=pc;i++)
	{
		if(p[i]>m) break;
		LL ca=0,caa=0,cb=0,cbb=0;
		while(a%p[i]==0&&a)
		{
			ca++;
			a/=p[i];
		}
		while(aa%p[i]==0&&aa)
		{
			caa++;
			aa/=p[i];
		}
		while(b%p[i]==0&&b)
		{
			cb++;
			b/=p[i];
		}
		while(bb%p[i]==0&&bb)
		{
			cbb++;
			bb/=p[i];
		}
		if(caa>ca||cbb<cb)
		{
			return -1;
		}
		if(min(ca,caa)>max(cb,cbb))
		{
			return -1;
		}//cout<<ca<<" "<<caa<<" "<<cb<<" "<<cbb<<endl;
		if(cb<cbb&&ca>caa&&caa!=cbb) return -1;
		if(cb<cbb||ca>caa) continue;
		t*=max(cb,cbb)-min(ca,caa)+1;//cout<<t<<" ";
	}
	return t;
}

int main()
{
	freopen("son.in","r",stdin);
	freopen("son.out","w",stdout);
	shaisu();
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d%d%d%d",&a,&aa,&b,&bb);
		m=max(max(a,aa),max(b,bb));
		int t=fenjie();
		int ff=0;
		if(a!=1)
		{
			p[++pc]=a;
			ff=1;
		}
		if(bb!=1)
		{
			p[++pc]=bb;
			ff=1;
		}
		if(ff)
		 t*=fenjie();
		if(t<0) cout<<0<<endl;
		else cout<<t<<endl;
	}
	return 0;
}