记录编号 |
133007 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2009]Hankson的趣味题 |
最终得分 |
100 |
用户昵称 |
席一鸣 |
是否通过 |
通过 |
代码语言 |
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;
}
}