记录编号 |
127476 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2009]Hankson的趣味题 |
最终得分 |
100 |
用户昵称 |
Cirno |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.107 s |
提交时间 |
2014-10-15 19:01:13 |
内存使用 |
0.51 MiB |
显示代码纯文本
- #include<iostream>
- #include<cstdio>
- #include<cmath>
- using namespace std;
- #define SIZE 50000
- #define ll long long
- int p[SIZE];
- ll a0,b0,a1,b1;
- ll sum=1;
- ll aa0,aa1,bb0,bb1;
- ll low,high;
- void getprime()
- {
- bool prime[SIZE]={0};
- int k=0;
- int temp=(int)sqrt((double)SIZE);
- for(int i=2;i<SIZE;i++)
- {
- if(!prime[i])
- {
- p[k]=i,k++;
- if(i<=temp)
- {for(int j=i*i;j<=SIZE;j+=i)
- prime[j]=1;}
- }
- }
- }
- ll resolve(ll &x,ll p)
- {
- ll sum=0;
- while(x%p==0)
- {
- x/=p,sum++;
- }
- return sum;
- }
- void deal(ll pi)
- {
- aa0=resolve(a0,pi),aa1=resolve(a1,pi),bb0=resolve(b0,pi),bb1=resolve(b1,pi);//素数的幂
- low=aa1,high=bb1;//π(bi-ai)
- if(aa0>aa1)//if(γi>βi)
- high=aa1;//(bi-ai)=1
- if(bb0<bb1)//if(γi<βi)
- low=bb1;//(bi-ai)=1
- {if(high>=low)
- sum*=(high-low+1);
- else
- sum=0;return;
- }
- }
- void init()
- {
- freopen("son.in","r",stdin);
- freopen("son.out","w",stdout);
- int n;
- scanf("%d",&n);
- for(int k=0;k<n;k++)
- {
- scanf("%d%d%d%d",&a0,&a1,&b0,&b1);
- sum=1;
- for(int i=0;p[i]*p[i]<=b1&&p[i]!=0;i++)
- {
- deal(p[i]);
- }
- if(b1>1)
- deal(b1);
- printf("%d\n",sum);
- }
- }
- int main()
- {
- getprime();
- init();
- return 0;
- }