比赛 |
20160303 |
评测结果 |
AAAAAAAAAA |
题目名称 |
Hankson的趣味题 |
最终得分 |
100 |
用户昵称 |
Fancy |
运行时间 |
0.015 s |
代码语言 |
C++ |
内存使用 |
0.48 MiB |
提交时间 |
2016-03-03 19:18:31 |
显示代码纯文本
#include<cstdio>
using namespace std;
const int N=50001;
int T,ans,a0,a1,b0,b1,tot,prime[N];
bool not_p[N];
void pre()
{
not_p[1]=1;
for(int i=2;i<N;i++)
{
if(!not_p[i]) prime[++tot]=i;
for(int j=1;j<=tot&&prime[j]*i<N;j++)
{
not_p[prime[j]*i]=1;
if(!(i%prime[j])) break;
}
}
}
bool calc(int x)
{
int c1=0,c2=0,c3=0,c4=0;
while(!(a0%x)) a0/=x,c1++;
while(!(a1%x)) a1/=x,c2++;
while(!(b0%x)) b0/=x,c3++;
while(!(b1%x)) b1/=x,c4++;
if(c1==c2&&c3==c4&&c1<=c3) ans*=c3-c1+1;
else if((c1==c2&&((c3==c4&&c1>c3)||(c3!=c4&&c4<c1)))||
(c1!=c2&&((c3==c4&&c2>c3)||(c3!=c4&&c2!=c4)))) ans=0;
return ans;
}
int main()
{
freopen("son.in","r",stdin);
freopen("son.out","w",stdout);
scanf("%d",&T);pre();
while(T--)
{
ans=1;
scanf("%d%d%d%d",&a0,&a1,&b0,&b1);
for(int i=1,x=prime[i];x*x<=b1;i++,x=prime[i])
if(!(b1%x))
if(!calc(x))
break;
if(b1!=1) calc(b1);
printf("%d\n",ans);
}
}